mapper文件相当于 DAO 接口的”实现类“,作用是读取 xml 文件中的标签配置封装到 Java 对象中。
PageHelper是一个独立于MyBatis框架之外的第三方分页插件。
Mapper初始化
常用配置项
mapper根标签
mapper文件相当于DAO接口的 ”实现类“,namespace属性要指定要 “实现” 的DAO接口的全限定名。
insert标签
声明添加操作,即 sql 中的 insert 语句。
常用属性
id属性:绑定对应DAO接口中的方法。
parameterType属性:用以指定接口中对应方法的参数类型(可省略)。
useGeneratedKeys属性: 设置添加操作是否需要回填生成的主键
keyProperty属性:指定回填的id值设置给参数对象的哪个属性。
timeout属性:设置此操作的超时时间,如果不设置则一直等待。
主键回填
方式一 |
|
方式二 |
|
delete标签
声明删除操作。
update标签
声明修改操作。
select标签
声明查询操作。
常用属性
resultMap标签
1 2 3 4 5 6 7 8
| <resultMap id="studentMap" type="Student"> <id column="sid" property="stuId"/> <result column="stu_num" property="stuNum"/> <result column="stu_name" property="stuName"/> <result column="stu_gender" property="stuGender"/> <result column="stu_age" property="stuAge"/> </resultMap>
|
cache标签
设置当前DAO进行数据库操作时的缓存属性设置。
1
| <cache type="" size="" readOnly="false"/>
|
sql和include
自定义 sql 片段。
1 2 3 4 5
| <sql id="wanglaoji">sid , stu_num , stu_name , stu_gender , stu_age</sql>
<select id="listStudents" resultMap="studentMap"> select <include refid="wanglaoji"/> from tb_students </select>
|
分页插件
分页插件是一个独立于MyBatis框架之外的第三方插件——PageHelper。
1. 添加分页插件的依赖
1 2 3 4 5 6
| <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.1.10</version> </dependency>
|
2. 配置插件
在 mybatis 的主配置文件 mybatis-config.xml 中通过 plugins
标签进行配置:
1 2 3 4
| <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin> </plugins>
|
3. 分页实例
对学生信息进行分页查询。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| @Test public void testPagePlugins() { StudentDAO studentDAO = MyBatisUtil.getMapper(StudentDAO.class); PageHelper.startPage(1,2); List<Student> students = studentDAO.listStudents(); PageInfo<Student> pageInfo = new PageInfo<Student>(students);
List<Student> list = pageInfo.getList(); for (Student stu : list) { System.out.println(stu); } }
|
4. 带条件分页
只需在 sql 语句中使用 where 语句进行条件过滤。
1 2 3 4 5 6 7 8
| @Test public void testListStudentsByPage() { StudentDAO studentDAO = MyBatisUtil.getMapper(StudentDAO.class); PageHelper.startPage(2,4); List<Student> list = studentDAO.listStudentsByGender("女"); PageInfo<Student> pageInfo = new PageInfo<Student>(list); }
|