IBATIS最新最全开发指南 - 通俗易懂IBATIS教程(2)

iBATIS/MyBatis基础CRUD操作实现指南 本文还有配套的精品资源,点击获取 简介:本教程详细介绍了如何使用iBATIS(现称为MyBatis)框架实现Java Web开发中的基本CRUD操作。通过讲解iBATIS的核心概念、环境搭建、项目结构构建和CRUD操作的具体实现,帮助开发者提升开发效率和可维护性。 1. iBATIS框架概述 iBATIS,一个曾经在Java持久层领域里大放异彩的框架,自20... 阅读详情
OSCache 来自第三方组织Opensymphony 。可以通过以
下网址获得OSCache 的最新版本( http://www.opensymphony.com/oscache/)。
在生产部署时,建议采用OSCache,OSCache 是得到了广泛使用的开源Cache 实现
(Hibernate 中也提供了对OSCache 的支持),它基于更加可靠高效的设计,更重要的是,
最新版本的OSCache 已经支持Cache 集群。如果系统需要部署在集群中,或者需要部署在
多机负载均衡模式的环境中以获得性能上的优势,那么OSCache 在这里则是不二之选。
Ibatis 中对于OSCache 的配置相当简单:
<cacheModel id="userCache" type="OSCACHE">
<flushInterval hours="24"/>
<flushOnExecute statement="updateUser"/>
<property name="size" value="1000" />
</cacheModel>
之所以配置简单,原因在于,OSCache 拥有自己的配置文件(oscache.properties)J。
下面是一个典型的OSCache 配置文件:
#是否使用内存作为缓存空间
cache.memory=true
#缓存管理事件监听器,通过这个监听器可以获知当前Cache 的运行情况
cache.event.listeners=com.opensymphony.oscache.plugins.clustersupport.JMSBroa
dcastingListener
#如果使用磁盘缓存(cache.memory=false),则需要指定磁盘存储接口实现
#cache.persistence.class=com.opensymphony.oscache.plugins.diskpersistence.Disk
PersistenceListener
# 磁盘缓存所使用的文件存储路径
# cache.path=c:myappcache
# 缓存调度算法,可选的有LRU,FIFO 和无限缓存(UnlimitedCache)

# cache.algorithm=com.opensymphony.oscache.base.algorithm.FIFOCache
# cache.algorithm=com.opensymphony.oscache.base.algorithm.UnlimitedCache
cache.algorithm=com.opensymphony.oscache.base.algorithm.LRUCache
#内存缓存的最大容量
cache.capacity=1000
# 是否限制磁盘缓存的容量
# cache.unlimited.disk=false
# 基于JMS 的集群缓存同步配置
#cache.cluster.jms.topic.factory=java:comp/env/jms/TopicConnectionFactory
#cache.cluster.jms.topic.name=java:comp/env/jms/OSCacheTopic
#cache.cluster.jms.node.name=node1
# 基于JAVAGROUP 的集群缓存同步配置
#cache.cluster.properties=UDP(mcast_addr=231.12.21.132;mcast_port=45566;ip_
ttl=32;mcast_send_buf_size=150000;mcast_recv_buf_size=80000):PING(timeout
=2000;num_initial_members=3):MERGE2(min_interval=5000;max_interval=10000
):FD_SOCK:VERIFY_SUSPECT(timeout=1500):pbcast.NAKACK(gc_lag=50;retransm
it_timeout=300,600,1200,2400,4800):pbcast.STABLE(desired_avg_gossip=20000):
UNICAST(timeout=5000):FRAG(frag_size=8096;down_thread=false;up_thread=fal
se):pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;shun=false;print_loc
al_addr=true)
#cache.cluster.multicast.ip=231.12.21.132
配置好之后,将此文件放在CLASSPATH 中,OSCache 在初始化时会自动找到此
文件并根据其中的配置创建缓存实例。

ibatis in Spring
这里我们重点探讨Spring 框架下的ibatis 应用,特别是在容器事务管理模式下的ibatis
应用开发。
关于Spring Framework ,请参见笔者另一篇文档:
《Spring 开发指南》http://www.xiaxin.net/Spring_Dev_Guide.rar
针对ibatis,Spring 配置文件如下:
Ibatis-Context.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
">
<beans>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>net.sourceforge.jtds.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:jtds:sqlserver://127.0.0.1:1433/Sample</value>
</property>
<property name="username">
<value>test</value>
</property>
<property name="password">
<value>changeit</value>
</property>
</bean>
<bean id="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>SqlMapConfig.xml</value>
</property>
</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactio
nManager">
"http://www.springframework.org/dtd/spring-beans.dtd

 

 

<property name="dataSource">
<ref local="dataSource"/>
</property>
</bean>
<bean id="userDAO" class="net.xiaxin.dao.UserDAO">
<property name="dataSource">
<ref local="dataSource" />
</property>
<property name="sqlMapClient">
<ref local="sqlMapClient" />
</property>
</bean>
<bean id="userDAOProxy"
class="org.springframework.transaction.interceptor.TransactionPro
xyFactoryBean">
<property name="transactionManager">
<ref bean="transactionManager" />
</property>
<property name="target">
<ref local="userDAO" />
</property>
<property name="transactionAttributes">
<props>
<prop key="insert*">PROPAGATION_REQUIRED</prop>


<prop key="get*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>
</beans>
可以看到:
1. sqlMapClient 节点
sqlMapClient 节点实际上配置了一个sqlMapClient 的创建工厂类。
configLocation 属性配置了ibatis 映射文件的名称。
2. transactionManager 节点
transactionManager 采用了Spring 中的DataSourceTransactionManager 。
3. userDAO 节点

 

对应的,UserDAO 需要配置两个属性,sqlMapClient 和DataSource,
sqlMapClient 将从指定的DataSource 中获取数据库连接。
本例中Ibatis 映射文件非常简单:
sqlMapConfig.xml:
<sqlMapConfig>
<sqlMap resource="net/xiaxin/dao/entity/user.xml"/>
</sqlMapConfig>
net/xiaxin/dao/entity/user.xml
<sqlMap namespace="User">
<typeAlias alias="user" type="net.xiaxin.dao.entity.User" />
<insert id="insertUser" parameterClass="user">
INSERT INTO users ( username, password) VALUES ( #username#,
#password# )
</insert>
</sqlMap>
UserDAO.java:
public class UserDAO extends SqlMapClientDaoSupport implements
IUserDAO {
public void insertUser(User user) {
getSqlMapClientTemplate().update("insertUser", user);
}
}
SqlMapClientDaoSupport(如果使用ibatis 1.x 版本,对应支持类是
SqlMapDaoSupport)是Spring 中面向ibatis 的辅助类,它负责调度DataSource 、

 


SqlMapClientTemplate(对应ibatis 1.x 版本是SqlMapTemplate)完成ibatis 操作,
而DAO 则通过对此类进行扩展获得上述功能。上面配置文件中针对UserDAO 的属性设
置部分,其中的属性也是继承自于这个基类。
SqlMapClientTemplate 对传统SqlMapClient 调用模式进行了封装,简化了上层访问
代码。
User.java:
public class User {
public Integer id;
public String username;

 

 

public String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}
测试代码:
InputStream is = new FileInputStream("Ibatis-Context.xml");
XmlBeanFactory factory = new XmlBeanFactory(is);
IUserDAO userdao = (IUserDAO)factory.getBean("userDAOProxy");
User user = new User();
user.setUsername("Sofia");
user.setPassword("mypass");
userdao.insertUser(user);
对比前面ibatis 程序代码,我们可以发现UserDAO.java 变得异常简洁,这也正是
Spring Framework 为我们带来的巨大帮助。
Spring 以及其他IOC 框架对传统的应用框架进行了颠覆性的革新,也许这样的评价有

 


点过于煽情,但是这确是笔者第一次跑通Spring HelloWorld 时的切身感受。有兴趣的
读者可以研究一下Spring framework,enjoy it!   
自动化生成iBATIS工具和实践教程 iBATIS是一个优秀的持久层框架,它与传统的ORM解决方案相比,提供了更多地控制SQL语句执行的能力。通过映射文件,开发者能够精确定义SQL语句与对象之间的映射关系,从而更好地处理复杂查询。自动化工具的选择和安装是确保整个开发、构建和测试流程流畅进行的前提。一个好的自动化工具可以大幅度提高开发效率,减少重复性劳动。构建脚本应包含清晰的结构,使得其他开发者能够理解和维护。// Jenkinsfile示例,使用Groovy语言编写pipeline {agent anystages { 阅读详情

相关推荐

C#开发医学影像胶片打印系统(一):万能花式布局的实现思路

本篇文章将介绍开发医学影像胶片打印系统(printscu模式)遇到不规则排版时的一种思路,一般来讲,医院打印胶片时都是整张胶片打印,但有时需要将多个病人或一个病人的多个检查打印在同一张胶片上,这时候就需要不规则排版来满足打印需求,使胶片利用率最大化。

罗万科技的博客 1325

Spring配置iBatis多个SqlMapConfig.xml

<br />Spring粘合iBatis的时候需要配置iBatis的SqlMapConfig.xml<br /> <br />对于项目多个模块而又想同时能管理起来,普遍的单个SqlMapConfig.xml就会显得臃肿<br /> <br />可喜的是Spring已经为大家想好这一切,提供能灵活的配置<br /> <br />configLocation        // 单个SqlMapConfig.xml<br />configLocations      // 多个SqlMapConfig.xml<

宏轩JAVA技术专栏 1万+

用ADS搞定CGH40010F的宽带连续F类功放:从阻抗计算到版图仿真的保姆级流程

本文详细介绍了使用ADS设计CGH40010F宽带连续F类功放的全流程,从阻抗计算到版图仿真。通过分析器件特性和理论基础,提供谐波阻抗匹配和版图协同验证的实用技巧,帮助射频工程师高效完成高效率功放设计。重点关注宽带连续F类功放的设计难点和调试方法,提升设计成功率。

weixin_29189377的博客 379

ibatis入门教程

1、本文通过几个简单的示例,实现ibatis的增删改查的功能。 2、构建数据库表,contact表,建表语句如下:(使用的是mysql数据库) contact表: [code="java"] drop table if exists contact; create table contact( id int(10) not null auto_increment, fir...

iteye_4696的博客 472

Linux下libdrm实战:从零搭建一个简单的DRM显示程序(附完整代码)

本文是一份Linux下libdrm的实战指南,详细介绍了如何从零开始搭建一个简单的DRM显示程序。通过对比传统Framebuffer的局限性,阐述了现代DRM架构的核心优势与核心对象(FrameBuffer、Plane、CRTC等)的协作流程。文章提供了完整的代码示例,演示了如何打开设备、创建并填充Dumb Buffer、设置CRTC以依次显示红绿蓝纯色画面,并涵盖了编译、运行及进阶开发要点,为嵌入式Linux图形开发提供了扎实的入门基础。

weixin_29183637的博客 407

51单片机定时器的原理、应用与编程实现

本文系统介绍了51单片机定时器的基本原理与应用。首先阐述了定时器的工作原理,包括定时模式和计数模式的区别。然后详细讲解了定时器的四种工作模式(方式0-方式3)及其适用场景,并分析了相关寄存器(TMOD、TCON、THx/TLx)的功能设置。文章还给出了定时器编程的具体步骤,包括初始化、计数初值计算和示例代码。最后通过LED闪烁、PWM波形产生、脉冲计数等实际应用案例,展示了定时器的多样化应用。掌握这些知识对嵌入式系统开发具有重要意义。

2501_91227323的博客 1524

iBatis学习教程(经典)

iBatis学习教程(经典) 发布时间: 2012-02-18 15:28:08   作者:本站编辑   来源: 民软网   浏览次数:3538182   我要评论(1) 摘要: iBatis使用简单的XML描述文件将Java Bean,Map实现和基本数据类型的包装类(String,Integer等)映射成JD... 一,       iBatis简介 iBatis是一种数据

evilcry2012的专栏 1234

【HCIP-AI 进阶之路(一)】零成本白嫖算力,7天速通华为人工智能资深开发者认证

《HCIP-AIEIDeveloper认证备考指南》摘要:本文深度解析华为HCIP-AI(H13-331)认证考试要点,涵盖考试大纲、评分标准及备考策略。重点剖析昇腾AI全栈架构,包括达芬奇架构核心计算单元(Cube/Vector/Scalar Unit)和四大层级关系(芯片-CANN-框架-应用)。针对无硬件资源的开发者,提供MindSpore CPU版、ModelArts免费算力和沙箱实验室三种零成本实践方案。文章强调该认证对国企/华为生态企业求职者的价值,并指出多选题是主要失分点。下篇将聚焦计算机视觉

2301_82049134的博客 1188

IBatis最新最全开发指南 - 通俗易懂IBAT教程(2)

OSCache 来自第三方组织Opensymphony 。可以通过以下网址获得OSCache 的最新版本(http://www.opensymphony.com/oscache/)。在生产部署时,建议采用OSCache,OSCache 是得到了广泛使用的开源Cache 实现(Hibernate 中也提供了对OSCache 的支持),它基于更加可靠高效的设计,更重要的是,最新版本的OSCache 已

Gerry的专栏 2975

Fast-LIO2代码解析 古月居

FAST-LIO,FAST-LIO2与FASTER-LIO - 古月居FAST-LIO2代码解析(一) - 古月居FAST-LIO2代码解析(二) - 古月居FAST-LIO2代码解析(三) - 古月居FAST-LIO2代码解析(四) - 古月居FAST-LIO2代码解析(五) - 古月居FAST-LIO2代码解析(六) - 古月居

li4692625的博客 2793

团体程序设计天梯赛竞赛题--登顶题【L3-042 污染大亨】

登顶级 3 道题,每道题 30 分,满分为 90 分。

Pretty Boy Fox的博客 1361

IBATIS最新最全开发指南 - 通俗易懂IBATIS教程

IBATIS最新最全开发指南 - 通俗易懂IBATIS教程

weixin_34248849的博客 79

innovus:streamOut gds中pg text带有冒号(:)解决办法

streamOut后查看layout,发现部分PG text后面加了冒号,比如VDD: / VSS:。当然,这个问题还有另一种解决办法,就是通过脚本给terminal打text再streamOut。我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?

m0_61544122的博客 1192

ibatis2mybatis 项目使用教程

ibatis2mybatis 项目使用教程 项目介绍 ibatis2mybatis 是一个开源工具,旨在帮助开发者将旧的 iBATIS 2.x sqlmap 文件转换为 MyBatis 3.x mapper 文件。由于 iBATIS 2.x 框架已经不再维护,MyBatis 提供了更加丰富的功能和更好的支持,因此将 iBATIS 升级到 MyBatis 对于仍在使用旧框架的项目来说是非常必要的。 ...

gitblog_00002的博客 718

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

IBATIS最新最全开发指南 - 通俗易懂IBATIS教程(1)

ibatis 开发指南ibatis Quick Start......................................... 5 准备工作............................................... 5 构建ibatis 基础代码...................................... 5 ibatis 配置..........

Jason Hm 3万+

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

ibatis 开发指南

http://www.xiaxin.net/ibatis_Guide.rar

夏昕的专栏 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

IBatis最新最全开发指南 - 通俗易懂IBAT教程(1)

ibatis 开发指南ibatis Quick Start......................................... 5 准备工作............................................... 5 构建ibatis 基础代码...................................... 5 ibatis 配置..........

Gerry的专栏 2557
上一篇: IBATIS最新最全开发指南 - 通俗易懂IBATIS教程(1)
下一篇: Session详解
lhminjava
博客等级 码龄21年 15粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值