• 早期MyBatis开发与接口式Mybatis开发的简介


    早期MyBatis开发与接口式Mybatis开发的简介

    一、早期版本的myBatis使用  

             导jar包
                1、配置mybatis.xml的配置文件
                    1)、需要加载数据库配置文档           

        <properties resource="db.properties" />

                    2)、配置数据源,数据库连接池、处理事务方式

     <environments default="development">
         <environment id="development">
               <transactionManager type="JDBC"/>
               <!-- 链接数据库 的数据池 -->
               <dataSource type="POOLED">
                     <property name="username" value="${jdbc.username}" />
                     <property name="password" value="${jdbc.password}" />
                     <property name="url" value="${jdbc.url}" />
                     <property name="driver" value="${jdbc.driver}" />
                </dataSource>
          </environment>
    </environments>

                    3)、配置映射文件 即xml中配置的sql语句文件 文件位置需要使用/ 不能使用 .

     <mapper url="file:///var/mappers/AuthorMapper.xml"/>
     <mapper resource="org/mybatis/builder/PostMapper.xml"/>
     <mappers>
          <mapper resource="com/da/wei/mapper.xml"/>
     </mappers>

                2、配置映射mapper.xml
                 

      <mapper namespace="com.cn.mybatis.mapper.EmployeeMapper">
          <!-- 命名空间使用将要映射执行方法的接口文件  在此处,原始的方法中,命名空间的作用并不明显-->
          <!-- 查询所以字段信息 -->
          <select id="selectAllEmployee" resultType="com.cn.mybatis.entity.Employee">   
             SELECT     emp_id AS empId,emp_name AS empName,emp_gender AS empGender,emp_email AS empEmail FROM employee
          </select>
          <!-- 通过id号查询员工信息 -->
          <select id="selectEmployeeById" resultType="com.cn.mybatis.entity.Employee" parameterType="java.lang.Integer">
             SELECT     emp_id AS empId,emp_name AS empName,emp_gender AS empGender,emp_email AS empEmail
              FROM employee WHERE emp_id = #{empId}
          </select>
      </mapper>

                3、执行sql操作
                    执行步骤:
                        1、配置资源文件
                        2、设置输入流
                        3、通过输入流创建会话工厂
                             new SqlSessionFactoryBuilder().build(iS);
                        4、通过会话工厂创建会话
                            sqlSessionFactory.openSession();
                        5、通过会话执行sql
                            sqlSession.selectOne("com.cn.mybatis.mapper.EmployeeMapper.selectEmployeeById",1);
                            其中第一个参数是映射过去的参数,即需要执行的方法体的全限定名
                            第二个是参数,需要与设置的值类型(方法体的参数类型统一)
                            这里可以直接强转到想获得的类型,默认为Object                       
                            sqlSession.selectList("com.cn.mybatis.mapper.EmployeeMapper.selectAllEmployee",Employee.class);
                            这里查询返回list 可以通过使用类类型设置返回值的类型,可是不能使用参数                

                  6、关闭会话
                      sqlSession.close();

     1   private static SqlSessionFactory getSqlSessionFactory(){
     2       //1、配置资源文件
     3       String source = "mybatis.xml";
     4       //2、设置输入流
     5       InputStream iS = null;
     6       //3、创建会话工厂
     7       SqlSessionFactory sqlSessionFactory = null;
     8       try {
     9             //4、将配置文件以流的方式读入
    10             iS = Resources.getResourceAsStream(source);
    11             //5、根据配置文件创建会话工场
    12            sqlSessionFactory = new SqlSessionFactoryBuilder().build(iS);
    13            return sqlSessionFactory;
    14              } catch (IOException e) {
    15               // TODO Auto-generated catch block
    16                e.printStackTrace();
    17             }
    18       return null;
    19 }
    20 public static void test01(){
    21     SqlSessionFactory sqlSessionFactory = null;
    22     SqlSession sqlSession = null;
    23     //获取会话工厂
    24     sqlSessionFactory = getSqlSessionFactory();
    25     if(sqlSessionFactory!=null){
    26         //6、由会话工程创建会话
    27         sqlSession = sqlSessionFactory.openSession();
    28         //7、由会话执行sql
    29        Employee employee = sqlSession.selectOne("com.cn.mybatis.mapper.EmployeeMapper.selectEmployeeById",1);
    30        System.out.println(employee);
    31        System.out.println("==============标准割==============");
    32        List<Employee> listEmployee = sqlSession.selectList("com.cn.mybatis.mapper.EmployeeMapper.selectAllEmployee",Employee.class);
    33         //    System.out.println(listEmployee);
    34         for(Employee emp : listEmployee){
    35                 System.out.println(employee);
    36           }           //sqlSession.selectList("com.cn.mybatis.mapper.EmployeeMapper.selectAllEmployee", rowBounds)
    37          sqlSession.close(); 
    38    }
    39 }

            早期版本的myBatis其执行的过程为,    
                1、在使用时,通过引用资源mybatis.xml,创建会话工厂
                2、业务执行时,加载mybatis的配置文件
                    在mybatis中加载数据库的配置文件db.properties文件,进行数据库数据源配置,同时进行数据连接池,数据库事务管理的配置。
                3、在mybatis中加载sql映射文件mapper.xml
                4、会话工厂创建会话,通过创建出来的会话进行功能调用
                    调用时,其中的statement参数需要执行,执行方法的全限定名。
                5、使用过后进行会话的关闭。                      

     二、接口式版本开发        

          接口版本配置基本一致          

        1、mybatis.xml配置
                    其中映射使用的mapper.xml需要指定到对应的包下
                2、mapper.xml配置
                    按照开发规范,这里需要将mapper的名字配置与接口方法同名且在同一包下。
                        且命名空间此时用有效需要设置,其值是对应的mapper.xml的接口文件全限定名。
                3、使用

          在调用时不再是以前的那种statement的配置方式了
                    通过创建出来的会话,通过获取映射的方式,获取mapper方法接口的代理对象,使用其代理对象进行方法体的直接调用
                    //由会话工程创建会话
                    sqlSession = sqlSessionFactory.openSession();
                    //通过会话获取方法->代理对象
                    EmployeeMapper employeeMapper = sqlSession.getMapper(com.cn.mybatis.mapper.EmployeeMapper.class);
                    List<Employee> listEmployee = employeeMapper.selectAllEmployee();
                    Employee employee = employeeMapper.selectEmployeeById(4);    

     以上两种方式的比较:            

      1、接口方式的sql语句mapper.xml的需要按照规范,与接口方法放在同包下,且保持同名。
                        早期方法只需要在mybatis下指定对应的地址即可
                    接口的方式更加规范和易读,可以提高开发效率。    
                2、接口方法在调用时,接口采用通过会话工厂创建代理对象的方式,使用代理对象调用接口中的方法使之实现。
                        早期方法使用会话直接使用,使用会话的方法指定对应的statement(方法的全限定名)进行sql操作。
                    接口方式由于直接调用方法,因此可以对参数进行检验验证。

  • 相关阅读:
    Proj FuzzViz Paper Reading: Global Overviews of Granular Test Coverage with Matrix Visualizations
    Proj FuzzViz Paper Reading: Voronoi Evolving Treemaps
    Proj EULibHarn Paper Reading: Systematic Comparison of Symbolic Execution Systems Intermediate Representation and its Generation
    Proj FuzzViz Paper Reading: Datadriven Tool Construction in Exploratory Programming Environments
    Proj FuzzViz Paper Reading: FMViz: Visualizing Tests Generated by AFL at the Bytelevel
    platform_device_register
    uboot CPU主频、内存主频的初始化
    rcu 锁机制
    自旋锁 spin_lock、 spin_lock_irq 以及 spin_lock_irqsave 的区别
    linux 内核动态调试
  • 原文地址:https://www.cnblogs.com/Mr-Dawei/p/7469025.html
Copyright © 2020-2023  润新知