iBtais 和 MyBatis
今年5月份,apache著名的开源软件iBatis被移到了google code上面,也就是如今的MyBatis3,他的前身就是iBatis,MyBatis的官网是http://mybatis.org。google code上能够下载,还有中文的帮助文档哦。MyBatis3和iBatis2有了很大的区别和变化,iBatis最大的好处就是用户不用在程序里面写任 何的JDBC代码了,这些底层的操做都被封装起来了,虽然iBatis用的不多,项目通常都是用hibernate的,可是我以为虽然都是做为持久层的框 架,仍是各自有各自的优点,因此仍是了解和学习下MyBatis。和大多数的框架相似,MyBatis的配置文件引入了新的dtd:mybatis-3- config.dtd和2.x的有很大的差异。下面是简单的一个配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis..org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 属性加载顺序:property中的属性首先被加载,而后是类路径下加载的properties资源
最后就是最为方法的参数传递进来,后面的会覆盖前面的相同的属性
-->
<properties resource="dbconfig.properties"/>
<typeAliases>
<typeAlias type="org.mybatis.domain.User" alias="User"/>
<typeAlias type="org.mybatis.domain.Department" alias="Department"/>
</typeAliases>
<environments default="development">
<!-- 在构建SqlSessionFactory时的默认环境 -->
<environment id="development">
<transactionManager type="JDBC">
</transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${mysql_driver}"/>
<property name="url" value="${mysql_url}"/>
<property name="username" value="${mysql_username}"/>
<property name="password" value="${mysql_password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/domain/UserMapper.xml"/>
<mapper resource="org/mybatis/domain/DepartmentMapper.xml"/>
</mappers>
</configuration>
这 个配置文件是构建MyBatis的核心配置,包括数据源,mapper文件等,SqlSessionFactory对应一个environment,这里 能够配置多个environment,说明能够构建多个SqlSessionFactory哦。这个配置文件能够配置不少东西的。
剩下的就是Mapper映射文件的配置,MyBatis3的Mapper配置大体以下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis..org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.mybatis.domain">
<select id="selectUserOne" parameterType="int" resultType="User">
select * from tb_user where id=#{id}
</select>
<insert id="insertUser" parameterType="org.mybatis.domain.User"
flushCache="true" statementType="PREPARED">
insert into tb_user(name,age,pwd)values(#{name},#{age},#{pwd})
</insert>
<update id="updateUser" parameterType="org.mybatis.domain.User" statementType="PREPARED">
update tb_user set name=#{name},age=#{age},pwd=#{pwd} where id=#{id}
</update>
<delete id="deteteUser" parameterType="org.mybatis.domain.User" statementType="PREPARED">
delete from tb_user where id=#{id}
</delete>
</mapper>
在应用时,首先初始化MyBatis,不少方式,可是SqlSessionFactory应该是单例的,没有必要进行屡次建立。
@Test
public void save()throws Exception{
//典型的用法
SqlSession session = MybatisUtil.getSqlSessioin();
try{
User user = new User();
user.setName("name1");
user.setAge(20);
user.setPwd("1234");
session.insert("org.mybatis.domain.insertUser",user);
session.commit();//提交事务
}catch(Exception e){
e.printStackTrace();
session.rollback();
}finally{
session.close();//session使用完毕后必定要进行释放
}
}
欢迎关注本站公众号,获取更多信息