1、在使用Mybatis之前,需要将Mybatis框架添加到工程项目中,主要步骤如下:
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对象后,就可以利用它对数据表进行增删改查了,使用步骤如下
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>