mybatis 显示自定义多个统计_myBatis查询结果显示多表内的字段——通过resultMap映射自定义结果...
问:查询完成后,结果列只能展示单表内的字段,比如用户表表中只记录角色编号,没有角色名称。结果列要如何展示在另一个表内的字段——角色名称呢?
答:通过resultMap映射自定义结果显示该字段。
1.resultMap的节点与属性值
id属性:唯一标识,次id值用于select元素resultMap属性的引用
type属性:表示该resultMap的映射结果类型,一般来说resultMap的type与select节点中的parameterType类型一致
result子节点:用于表示一些简单的属性
(1)column属性:表示从数据库中查询的字段名
(2)property:表示查询出来的字段对应的值赋给实体对象的哪个属性
2.使用方法
(1)SQL映射文件
select u.*,r.roleName
from smbms_user u,smbms_role r
where u.userRole = r.id
and userName like concat('%',#{userName},'%')
and userRole = #{userRole}
(2)UserMapper接口
public List getUserListByUser(User user);
(3)User.java
public classUser {private Integer id; //用户编号
private String userCode; //用户编码
private String userName; //用户名
private String userPassword; //密码
private Integer gender; //性别
private Date birthday; //生日
private String phone; //电话
private String address; //地址
private String userRole; //角色id//配合resultMap显示另一个表内的字段:角色名称//添加getter与setter方法
private String userRoleName; //
private Integer createdBy; //创建人
private Date creationDate; //创建日期
private Integer modifyBy; //修改人
private Date modifyDate; //修改日期//用户对应角色,可以通过用户访问到角色的所有信息,复杂映射
privateRole role;publicInteger getId() {returnid;
}public voidsetId(Integer id) {this.id =id;
}publicString getUserCode() {returnuserCode;
}public voidsetUserCode(String userCode) {this.userCode =userCode;
}publicString getUserName() {returnuserName;
}public voidsetUserName(String userName) {this.userName =userName;
}publicString getUserPassword() {returnuserPassword;
}public voidsetUserPassword(String userPassword) {this.userPassword =userPassword;
}publicInteger getGender() {returngender;
}public voidsetGender(Integer gender) {this.gender =gender;
}publicDate getBirthday() {returnbirthday;
}public voidsetBirthday(Date birthday) {this.birthday =birthday;
}publicString getPhone() {returnphone;
}public voidsetPhone(String phone) {this.phone =phone;
}publicString getAddress() {returnaddress;
}public voidsetAddress(String address) {this.address =address;
}publicString getUserRole() {returnuserRole;
}public voidsetUserRole(String userRole) {this.userRole =userRole;
}publicInteger getCreatedBy() {returncreatedBy;
}public voidsetCreatedBy(Integer createdBy) {this.createdBy =createdBy;
}publicDate getCreationDate() {returncreationDate;
}public voidsetCreationDate(Date creationDate) {this.creationDate =creationDate;
}publicInteger getModifyBy() {returnmodifyBy;
}public voidsetModifyBy(Integer modifyBy) {this.modifyBy =modifyBy;
}publicDate getModifyDate() {returnmodifyDate;
}public voidsetModifyDate(Date modifyDate) {this.modifyDate =modifyDate;
}publicString getUserRoleName() {returnuserRoleName;
}public voidsetUserRoleName(String userRoleName) {this.userRoleName =userRoleName;
}publicRole getRole() {returnrole;
}public voidsetRole(Role role) {this.role =role;
}
}
(4)UserService.java
@Testpublic voidtestGetUserListByUser(){
SqlSession session= null;
List userList = null;try{
session=MybatisUtil.createSqlSession();
User user1= newUser();
user1.setUserName("用户");
user1.setUserRole("1");
userList=session.getMapper(UserMapper.class).getUserListByUser(user1);
session.commit();
}catch(Exception e) {
e.printStackTrace();if (session != null) {
session.rollback();
}
}finally{if (session != null) {
session.close();
}
}for(User user : userList){
log.debug("user =====> "+user.getUserName()+"\t"+user.getUserRoleName());
}
}
3.步骤总结
(1)首先在User类加入userRoleName属性,加入该属性的getter与setter方法
(2)修改UserMapper接口中的对应查询方法
(3)修改UserMapper.xml中中的resultType属性为resultMap,注意其值为resultMap节点的id属性值
(4)注意resultMap中的property属性值与column属性值
(5)若要使用自动映射,则实体对象的属性名要与数据库字段名一致,否则就自定义结果映射(如本例)
mybatis 显示自定义多个统计_myBatis查询结果显示多表内的字段——通过resultMap映射自定义结果...相关推荐
- 查询数据库里所有表名和字段名的语句
查询数据库里所有表名和字段名的语句 SQL 查询所有表名: SELECT NAME FROM SYSOBJECTS WHERE TYPE='U' SELECT * FROM INFORMATION_S ...
- MySQL - 查询数据库里所有表名和字段名
查询数据库里所有表名和字段名的语句 SQL 查询所有表名 SELECT NAME FROM SYSOBJECTS WHERE TYPE='U' SELECT * FROM INFORMATION_SC ...
- mysql 查询案例dept,emp表内数据
mysql 查询案例dept,emp表内数据 部门表 员工表 工资等级表 查询案例: 部门表 CREATE TABLE DEPT( DEPTNO INT PRIMARY KEY, – 部门编号 DNA ...
- 达梦数据库查询模式名,表名,字段名
达梦数据库查询模式名,表名,字段名 查询所有的模式名 SELECT DISTINCT object_name FROM ALL_OBJECTS WHERE OBJECT_TYPE = 'SCH' 根据 ...
- mysql连接查询(两个表内和多个表内连接查询)
连接是关系数据模型的主要特点,连接查询是关系数据库中最主要的查询,包括内连接.外连接等. 当两个或多个表中存在相同意义的字段时,便可以通过这些字段对不同的表进行 连接查询,得到存放在多个表中的记录数据 ...
- hive SQL 创建数据库,创建hive表、查询时,其表名,字段,统统不区分大写(在底层一律转换为小写)
hive SQL 创建数据库,创建hive表.查询时,其表名,字段,统统不区分大写(在底层一律转换为小写) (1).默认default数据库 hive默认自带一个名为default的数据库,如果建表时 ...
- sql server查询不显示结果_仅凭网上查询结果显示邮件由行政机关签收,能证明行政机关一定收到了当事人的申请吗?...
仅凭网上查询结果显示邮件由行政机关签收,能证明行政机关一定收到了当事人的申请吗? 蓝承烈与中国人民银行二审行政裁定书 北京市高级人民法院 行 政 裁 定 书 (2018)京行终2922号 上诉人(一审 ...
- oracle 查询表字段6,Oracle 查询库中所有表名、字段名、字段名说明,查询表的数据条数、表名、中文表名、...
--创建用户 create user "用户名" identitied by "密码": --给自己修改密码 查询所有表名: select t.table_na ...
- hive表指定分区字段搜索_Spark SQL解析查询parquet格式Hive表获取分区字段和查询条件...
首先说一下,这里解决的问题应用场景: sparksql处理Hive表数据时,判断加载的是否是分区表,以及分区表的字段有哪些?再进一步限制查询分区表必须指定分区? 这里涉及到两种情况:select SQ ...
最新文章
- SpringBoot+Vue视频干货
- android开发检测用户是否使用了虚拟定位
- 【转】Android Camera 相机开发详解
- 20170102-文件处理
- 循序渐进DB2 (第2版)——DBA系统管理、运维与应用案例
- DP(三)——简单的完全背包
- Linux学习总结(37)——CentOS7下Firewall防火墙配置用法详解
- 设置mysql表名不区分大小写
- PHP Excel导入数据到MySQL数据库
- mysql jpa缓存,如何在Spring Data JPA CRUDRepository中添加缓存功能
- Linux下安装anaconda,创建虚拟环境python3.7,并且安装深度学习框架pytorch进行模型训练
- Unity功能点---动画控制CrossFade方法的使用和简单说明
- Qt编写物联网管理平台13-短信告警
- html缩小照片尺寸像素不变,怎么把图片变小 像素不变
- JS: exec()方法
- linux重启文件被删除,linux 误删文件恢复方法(debugfs)
- Excel2010分成两个或者多个独立窗口
- fn映射 mac 键盘_Mac 学习笔记(五)键位映射
- Comet OJ 夏季欢乐赛 完全k叉树
- 数据分析师需要学什么?数据分析师需要掌握什么技能呢?