文章目录
Mybatis 框架学习(四)——如果世界真的那么简单就好了
这一篇的标题是Mybtais的官方文档中的一句话,我觉得很经典,让大家有个印象…
一、resultMap 结果映射
解决属性名 和数据库字段名不一致的问题
就是说我们在java代码中要写一个pojo类,与数据库表的字段相对应,必须名字相同。
我们来看一下,如果名字不同的话
数据库中student表的字段
pojo包下student类我们改成名字不同的属性
原来是 name,我们改成 studentname
运行测试方法
发现所有的name都变成了 null,因为拿到数据库查询后的结果之后会根据字段名字映射到对应的类里面,因为name->studentName 对不上,所以全为null
那么我们如果想要数据库字段与实体类的属性名字不一致的话,怎么实现呢?
用resultMap标签解决
在写select标签的时候,返回值之前我们用的是 resultType返回实体类,这个时候我们可以用resultMap。resultMap后面跟一个id
在上面在写一个具体的resultMap标签
id自己取名字,增删改查的标签使用id直接调用
type对应实体类
里面写result标签,properties对应实体类中的属性,column对应数据库表中的字段,这个result就相当于有个对应关系,我们可以用不一致的属性在实体类中
官方文档的解释和上面的差不多,再看看还说了什么?
如果这个世界总是这么简单就好了
高级结果映射,复杂的sql语句,目前还接触不到,我们在以后的工作中再去应对吧
二、limit分页
分页会减少数据的处理量
sql语句中使用limit进行分页
limit用法回顾
select * from student limit n;
相当于查询从第1条到第n条的数据
select * from student limit startIndex,pageSize;
startIndex是从那一条开始的
pageSize是一页显示的数据的条数
相当于从第 startIndex开始,显示pageSize 条数据
mybtais中使用分页查询
1.在接口定义一个分页查询的方法,参数是map
// 按照分页来进行查询信息
List<Student> getUserLimit(Map<String,Integer> map);
2.测试方法里面创建map,传递map参数
@Test
public void getUserlimit(){
SqlSession sqlSession = MybatisUtil.getSqlSession();
StudentMapper studentMapper = sqlSession.getMapper(StudentMapper<