搭建Mybatis技术环境

1、在使用Mybatis之前,需要将Mybatis框架添加到工程项目中,主要步骤如下:

  • 为工程添加Mybatis开发包和数据库驱动包;
  • 在src下添加Mybatis配置文件SqlMapConfig.xml;
  • 修改SqlMapConfig.xml,指定数据库连接参数
  • 利用Mybatis API编程,获取SqlSession实例

2、获取SqlSession对象

                String cfg = "SqlMapConfig.xml";
        Reader reader = 
            Resources.getResourceAsReader(cfg);
        SqlSessionFactoryBuilder builder=
            new SqlSessionFactoryBuilder();
        SqlSessionFactory factory =
            builder.build(reader);
        SqlSession session = 
            factory.openSession();
        Connection conn=session.getConnection();
        System.out.println(conn);
        System.out.println(conn.getMetaData()
                .getDatabaseProductName());
        conn.close();
        session.close();        

3、当获取SqlSession对象后,就可以利用它对数据表进行增删改查了,使用步骤如下

  • 根据数据表编写实体类(Java POJO)
  • 编写SqlMap.xml映射文件,定义SQL操作和映射信息
  • 获取SqlSession对应,执行增删改查操作
  • 提交事务(DML)操作
  • 释放SqlSession对象资源

4、Session的增删改查

增
        session.insert("addDept",dept);
        session.commit();
        session.close();
改
        session.update("updateDept",dept);
        session.commit();
        session.close();
删
        session.delete("deleteById",10);
        session.commit();
        session.close();
查询单行
        session.selectone("findById",10);//需类型转换
        session.close();
查询多行
        session.selectList("findAll");
        session.close();

5、SqlSession 支持直接Sql语句执行

  关于Mapper接口 要求不能重复参数只能有一个,多个参数使用值对象查询才有返回值。

  所以Mapper不是DAO,没有Dao灵活方便!

6、利用Mybatis实现分页查询

  在使用SqlSession的selectList()方法时,指定一个RowBounds分页器参数、即可查询指定范围的记录

    RowBounds(offset,limit)构造器

      offset指定抓取记录的起始行,从0开始

      limit指定抓取记录的数量

    selectList()使用方法

      sqlSession.selectList(SQL的ID,参数,RowBounds对象);

  提示:

    Mybatis分页是基于内存分页,原理是查询出所有记录,然后基于JDBC的absolute()和next()方法定位获取部分记录,因此在遇到大量数据情况下,不推荐使用Mybatis自带分页功能。需要开发者指定分页查询的SQL语句或对Mybatis进行扩展使用。

7、使用Mapper映射器

  Mapper映射器是开发者创建绑定语句映射的接口,映射器接口的实例可以从SqlSession中获得。

try{
    DeptMapper mapper=session.getMapper(DeptMapper.class);
    //do work
}finally{
    session.close();
}

  Mapper接口中的方法名要和SlqMap.xml中的SQL的id保持一致。

8、ResultMap映射定义

  在SqlMap.xml定义<select>操作时,如果查询的结果字段名和Java POJO属性不一致时,需要使用<resultMap>元素显示的指定映射关系。例如

<select id="findAll1" resultMap="deptMap">
    select DEPTNO,DNAME,LOC from DEPT
</select>

<resultMap id="deptMap" type="org.tarena.entity.Dept">
    <result property="no" column="DEPTNO"/>
    <result property="name" column="DNAME"/>
    <result property="loc" colum="LOC"/>
</resultMap>

 

你可能感兴趣的:(mybatis)