数据访问层MyBatis解析

一、背景

        最近在研究Java的框架,刚刚接触到java对于数据访问层封装的框架之一,MyBatis,不得不说使用起来很是方便,跟写sql语句的感觉一样一样的;顺便读了少部分官方文档,由于英文有限读的太慢,只是读了一点关于作用域的内容,后续继续发现新东西...本文都是建立在自己对于MyBatis的理解之上的,标准还是要参靠官方文档...

二、理解

        1.两种使用方式

            注解:使用注解在接口中的方法上方插入sql语句即可,缺点:如果sql语句很长,那么就会显得不那么美观了,而且觉得会破坏java代码的可读性

            xml:清晰明了

            两种方式用哪种都行,看个人喜好吧...性能都差不多(反正注解也是在编译期间生成文件)

        2.使用步骤

            ①创建mybatis的配置文件,配置文件的内容有很多,目前只用了这几种配置

<configuration>
    <!--外部文件指定了驱动,连接,账号,密码-->
    <properties resource="jdbc.properties"/>
    <environments default="development">
        <environment id="development">
            <!--指定连接方式-->
            <transactionManager type="JDBC"/>
            <!--指定用连接池-->
            <dataSource type="POOLED">
                <!--引入外部文件指定的驱动,连接,账号,密码-->
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>
    <!--指定mapper文件(xml写法需要指定)-->
    <mappers>
        <mapper resource="Regist.xml"/>
        <mapper resource="Login.xml"/>
    </mappers>
</configuration>

           ②创建接口

 

public interface IRegist {
    public void regist(User user);
}

           ③创建Mapper文件

  

<!--命名空间必须为接口全路径-->
<mapper namespace="com.huimin.mybatis.IRegist">
    <!--id是接口中的方法名,parameterType是参数类型,resultType是返回值类型-->
    <select id="regist" parameterType="com.huimin.dao.User" resultType="">
--         sql语句,#{}会被翻译成PreparedStatement,${}会被翻译成普通的Statement
         INSERT INTO person (username,password) VALUES (#{username},#{password})
    </select>
</mapper>

          ④写Dao层

      

try {
            SqlSession sqlSession = new SsfInstance().Instance().openSession();
            IRegist regist = sqlSession.getMapper(IRegist.class);
            regist.regist(user);
            sqlSession.commit();
            sqlSession.close();
            return 1;
        } catch (Exception e) {
            e.printStackTrace();
        }

           SqlSessionFactory用单例模式创建的,整个项目就一个,直接用就行

三、分析

        1.方便,内部封装了数据库连接池,省去了反复创建连接,关闭连接,而且极大的优化数据库操作的性能

        2.稳定,内部分装了事务,保证了数据库的一致性,对于数据库的增删改都需要提交和关闭操作

        相对于jdbc来说,mybatis是真的方便,以上只是对於单独使用mybatis时的简单理解,有待继续深究...


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章