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使用完毕后一定要进行释放
        }
    }

你可能感兴趣的:(iBtais 和 MyBatis)