博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mybatis中封装结果集常见示例
阅读量:4587 次
发布时间:2019-06-09

本文共 2978 字,大约阅读时间需要 9 分钟。

1.返回一个对象

public interface EmployeeMapper {    public Employee getEmpByMap(Map
map);}

对应的EmployeeMapper.xml语句

返回值为该对象的类型

2.返回一个集合

public List
getEmpsByLastNameLike(String lastName);

对应的xml语句

返回值为集合中元素的类型

3.返回一个map集合

//返回一条记录的map;key就是列名,值就是对应的值    public Map
getEmpByIdReturnMap(Integer id);

对应的xml语句

这里查找到tbl_employee中的一条记录,可以直接返回一个Employee对象,也可以直接返回一个map集合

此时map中的键就是列名,如idlast_name,值则就是该行记录中对应的值。

4.返回一个定制的map

//多条记录封装一个map:Map
:键是这条记录的主键,值是记录封装后的javaBean //@MapKey:告诉mybatis封装这个map的时候使用哪个属性作为map的key @MapKey("lastName") public Map
getEmpByLastNameLikeReturnMap(String lastName);

对应的xml语句

该sql查找到多条记录,其实也就对应着多个Employee,那如何封装成一个map集合,使其值为Employee,键为我们定制的值呢?

可以在查询语句中加上@MapKey("lastName"),当然你也可以替换成主键id

以上这些其实都是resultType的用法

思考:表中的 一条记录通过restultType=“Employee”将结果与javaBean自动对应了起来,达到了自动映射的效果

当自动映射查询结果时,MyBatis 会获取结果中返回的列名并在 Java 类中查找相同名字的属性(忽略大小写)。 这意味着如果发现了 ID 列和 id 属性,MyBatis 会将列 ID 的值赋给 id 属性。

通常数据库列使用大写字母组成的单词命名,单词间用下划线分隔;而 Java 属性一般遵循驼峰命名法约定。为了在这两种命名方式之间启用自动映射,需要将 mapUnderscoreToCamelCase 设置为 true。

那如果返回的数据与javaBean不一致呢,比如我们关联查询了多张表,返回了各表中的部分字段,难道我们要往javaBean添加一些属性么?

那这里或许resultMap就能派上用场了,这是一种手动映射。



现在我们来看resultMap自定义结果集映射规则

// mapper接口与mapper.xml进行绑定public interface EmployeeMapperPlus {        public Employee getEmpById(Integer id);        public Employee getEmpAndDept(Integer id);        public Employee getEmpByIdStep(Integer id);        public List
getEmpsByDeptId(Integer deptId);}

以下为其基本用法:

场景一:

查询Employee的同时查询员工对应的部门  Employee===Department  一个员工有与之对应的部门信息;属性:   id  last_name  gender    d_id         did  dept_name (private Department dept;)
public class Employee {        private Integer id;    private String lastName;    private String email;    private String gender;    private Department dept; //一个部门属性}
public class Department {        private Integer id;    private String departmentName;    private List
emps;}

以下是sql

那如何封装resultMap?

可见resultMap支持:级联封装

还可以这么封装

转载于:https://www.cnblogs.com/heliusKing/p/11172731.html

你可能感兴趣的文章
Spring MVC框架初步讲解
查看>>
关于dl dt dd 文字过长换行在移动端显示对齐的探讨总结
查看>>
C#线程安全打开/保存文件对话框
查看>>
201555334 实验一:Java开发环境的熟悉 总结
查看>>
docker系列 --- 命令详解
查看>>
观察者模式 -- 设计模式系列文章(二)
查看>>
MySql学习14-----数据备份和恢复
查看>>
页面小标签
查看>>
卷积分
查看>>
Asp.Net MVC Filter权限过滤使用说明
查看>>
一次群体code review
查看>>
python-虚拟环境搭建
查看>>
How does exercise keep your brain young?
查看>>
[Linux] 添加环境变量
查看>>
postgresql逻辑结构--表空间(四)
查看>>
rsync备份服务器搭建学习笔记
查看>>
Python中matplotlib模块解析
查看>>
ORA-14551: 无法在查询中执行 DML 操作 .
查看>>
数据结构--栈的应用(表达式求值 nyoj 35)
查看>>
注解:大话AOP与Android的爱恨情仇
查看>>