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(); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现