java之mybatis之字段映射及多对一
1. 数据库中表的列名和实体类的属性名称不一致。
可以使用 resultMap来解决。
<select id="findAll" resultMap="UserMap">
select id,userName,age from t_user
</select>
<resultMap type="User" id="UserMap">
<!--id映射主键 property是实体类的属性名 column是表中的列名 -->
<id property="id" column="id"/>
<result property="name" column="userName"/>
<result property="age" column="age"/>
</resultMap>
2.在 mybatis 中多对一映射处理
用户表和角色表示多对一的关系

3.java 类结构
用户类:User.java
public class User implements Serializable{
private int id;
private String name;
private int age;
private int roleId;
private Role role;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int getRoleId() {
return roleId;
}
public void setRoleId(int roleId) {
this.roleId = roleId;
}
public Role getRole() {
return role;
}
public void setRole(Role role) {
this.role = role;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + ", roleId=" + roleId + ", role=" + role + "]";
}
}
角色类:Role.java
public class Role {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Role [id=" + id + ", name=" + name + "]";
}
}
4.映射关系----通过sql语句将两张表关联起来
<mapper namespace="cn.sxt.vo.UserMapper">
<select id="findAll" resultMap="UserMap">
select u.id as uid,u.name as uname,u.age as uage,
roleId,r.name as rname from t_user u,t_role r
where u.roleId=r.id
</select>
<resultMap type="User" id="UserMap">
<id property="id" column="uid"/>
<result property="name" column="uname"/>
<result property="age" column="uage"/>
<result property="roleId" column="roleId"/>
<!-- 映射关联对象 -->
<association property="role" column="roleId" javaType="Role">
<id property="id" column="roleId"/>
<result property="name" column="rname"/>
</association>
</resultMap>
</mapper>
5.测试
@Test
public void testFindAll() throws IOException{
SqlSession session = MybatisUtil.getSqlSession();
List<User> list = session.selectList("cn.sxt.vo.UserMapper.findAll");
for(User u:list){
System.out.println(u);
}
session.close();
}
java之mybatis之字段映射及多对一的更多相关文章
- MyBatis加强(1)~myBatis对象关系映射(多对一关系、一对多关系)、延迟/懒加载
一.myBatis对象关系映射(多对一关系.一对多关系) 1.多对一关系: ---例子:多个员工同属于一个部门. (1)myBatis发送 额外SQL: ■ 案例:员工表通过 dept_id 关联 部 ...
- java之hibernate之关联映射之多对一单向关联
1.在之前学习了单表的crud操作.在实际应用中,大都是多表关联操作,这篇会学习如何处理多表之间的关系. 2.考察书籍表和书籍分类表的关系.书籍表和书籍分类表之间是多对一的关系.数据库的表设计为: 3 ...
- MyBatis的高级映射之多对一
使用传统方式的形式 使用MyBatis的方式 这样会产生两条语句 使用ResultMap的方式,对结果进行映射和转换,自己控制 两条语句变成一条语句,然后进行映射,这时Student类中包含一个 Cl ...
- Java实体类之间的映射(多对多关系)
多对对的映射,可以用学生和课程进行演示.一个学生可以选择多个课程,一个课程又对应了多个学生 定义学生类 class Stu{ private String name; private String n ...
- 详解Java的MyBatis框架中SQL语句映射部分的编写
这篇文章主要介绍了Java的MyBatis框架中SQL语句映射部分的编写,文中分为resultMap和增删查改实现两个部分来讲解,需要的朋友可以参考下 1.resultMap SQL 映射XML 文件 ...
- mybatis整合spring 之 基于接口映射的多对一关系
转载自:http://my.oschina.net/huangcongmin12/blog/83731 mybatis整合spring 之 基于接口映射的多对一关系. 项目用到俩个表,即studen ...
- mybatis字段映射枚举类型
在底层使用mybatis的时候,我们可能会需要把表里的字段映射到Java里面的枚举类,现总结下工作中的用法: sku表里一个status_type字段为int类型.(这里是postgresql的脚本) ...
- 对于Oracle中Number类型的字段映射成Java中的具体类型的问题
我在Oracle中给一个用户Id字段设置为Number类型,使用JDBC在完成ORM的时候,以为其可以自动转换为Integer,因为我的POJO类id使用的就是Integer.但事实是,我在测试的时候 ...
- 第9章 MyBatis的关系映射
在实际开发中,对数据库的操作通常涉及多张表,涉及了对象和对象之间的关联关系.针对多表之间的操作,MyBatis提供了关联映射,通过关联映射就可以很好的处理对象与对象之间的关联关系 9.1 关联关系概述 ...
随机推荐
- shell之批量新增用户脚本(http-basic-auth)
user.txt(用户名记录文件) test001@.com test002@.com user.sh(shell脚本): for line in `cat user.txt` do echo $li ...
- Http、Socket、WebSocket之间联系与区别
WebSocket和Socket区别 可以把WebSocket想象成HTTP(应用层),HTTP和Socket什么关系,WebSocket和Socket就是什么关系. HTTP 协议有一个缺陷:通信只 ...
- Linux 删除文件未释放空间问题处理,下清空或删除大文件
linux里的文件被删除后,空间没有被释放是因为在Linux系统中,通过rm或者文件管理器删除文件将会从文件系统的目录结构上解除链接(unlink).然而如果文件是被打开的(有一个进程正在使用),那么 ...
- Why you need to understand garbage collection
Why you need to understand garbage collection I’ve been interviewing lots of C# developers recently, ...
- mysql知识集锦
1.mysql中InnoDB引擎中页的概念 2.mysql索引详解--如何从磁盘中读取索引文件
- win7上手机ADB interface无法安装驱动
解决办法: https://blog.csdn.net/riyuexingchen1204/article/details/84594061
- Cassandra3在Centos7下启动失败解决办法
Centos7 安装Cassandra启动过程提示失败,查看结果如下所示: [root@xx ~]# systemctl status cassandra ● cassandra.service - ...
- qt linux 打包
本文在银河麒麟上成功运行,程序类型:Qt控制台,使用到的Qt外库:mysql数据库 1.环境一共有两台,1是编译机[装有Qt.数据库],2是运行机[纯净机] 2.在编译机上安装Qt.mysql,我这里 ...
- Qt编写安防视频监控系统17-在线地图
一.前言 在线地图模块在一开始设计整个系统的时候就考虑进去了,主要功能就是在摄像机管理中,提供经纬度信息,然后加载百度地图在浏览器中显示,根据摄像机信息表中的每个摄像机的经纬度信息,自动生成设备点在地 ...
- c# 导出excel的三种方式
第一种:流导出 SaveFileDialog exe = new SaveFileDialog(); exe.Filter = "Execl files (*.xls)|*.xls" ...