mybatis多表查询
来源:互联网 发布:head first java 烂 编辑:程序博客网 时间:2024/06/05 20:40
1,业务需求
有两个实体类,分别是Requirement和Cooperate,分别表示需求和对接。一个需求可以有多个对接。
需求和对接,都需要记录用户。简而言之,需要知道需求是谁发布的,对接的人是谁。所以Requirement和
Cooperate分别有一个SysUser成员变量。
2,实体类
@Table(name = "sys_user")public class SysUser extends BaseEntity{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; /** * 登陆账号 */ private String username; /** * 密码 */ private String password; /** * 用户类型 */ private Integer usertype; /** * 是否可用 */ private Boolean enabled; /** * 真实姓名 */ private String nickname; /** * 邮箱 */ private String email; /** * 电话 */ private String tel; String qq; private Integer gender; private String company; private Integer type; private String developKey; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUsername() { return username; } public SysUser setUsername(String username) { this.username = username; return this; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Integer getUsertype() { return usertype; } public void setUsertype(Integer usertype) { this.usertype = usertype; } public Boolean getEnabled() { return enabled; } public void setEnabled(Boolean enabled) { this.enabled = enabled; } public String getNickname() { return nickname; } public void setNickname(String nickname) { this.nickname = nickname; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getTel() { return tel; } public void setTel(String tel) { this.tel = tel; } public String getQq() { return qq; } public void setQq(String qq) { this.qq = qq; } public Integer getGender() { return gender; } public void setGender(Integer gender) { this.gender = gender; } public String getCompany() { return company; } public void setCompany(String company) { this.company = company; } public Integer getType() { return type; } public void setType(Integer type) { this.type = type; } public String getDevelopKey() { return developKey; } public void setDevelopKey(String developKey) { this.developKey = developKey; }}
@Entity@Table(name = "cooperate")public class Cooperate extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private Integer userId; private Integer requirementId; private String illustration;//对接的留言和说明 private String userName; @Transient private Requirement requirement; @Transient private SysUser user; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } public Integer getRequirementId() { return requirementId; } public void setRequirementId(Integer requirementId) { this.requirementId = requirementId; } public String getIllustration() { return illustration; } public void setIllustration(String illustration) { this.illustration = illustration; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public SysUser getUser() { return user; } public void setUser(SysUser user) { this.user = user; }}
@Entity@Table(name = "requirement")public class Requirement extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private Integer userId; private Integer hardwareTypeId;//需求的硬件类型 private String hardwareTypeName;//需要的硬件类型名称 private String hardwareConnect;//需求所需要的硬件设备,多个硬件设备名称拼接成一个字符串,以“*”进行分割。 private Integer reqFileId;//需求文档 private Integer schedule; //需求对接进度 private String title; private String content; @Transient private List<Cooperate> cooperates;//所有已经对接的意向合作 @Transient private SysUser sysUser; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } public Integer getHardwareTypeId() { return hardwareTypeId; } public void setHardwareTypeId(Integer hardwareTypeId) { this.hardwareTypeId = hardwareTypeId; } public Integer getReqFileId() { return reqFileId; } public void setReqFileId(Integer reqFileId) { this.reqFileId = reqFileId; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getContent() { return content; } public void setContent(String content) { this.content = content; } @Override public String toString() { return "Requirement [id=" + id + ", userId=" + userId + ", hardwareTypeId=" + hardwareTypeId + ", reqFileId=" + reqFileId + ", title=" + title + ", content=" + content + "]"; } public String getHardwareTypeName() { return hardwareTypeName; } public void setHardwareTypeName(String hardwareTypeName) { this.hardwareTypeName = hardwareTypeName; } public String getHardwareConnect() { return hardwareConnect; } public void setHardwareConnect(String hardwareConnect) { this.hardwareConnect = hardwareConnect; } public Integer getSchedule() { return schedule; } public void setSchedule(Integer schedule) { this.schedule = schedule; } public List<Cooperate> getCooperates() { return cooperates; } public void setCooperates(List<Cooperate> cooperates) { this.cooperates = cooperates; } public SysUser getSysUser() { return sysUser; } public void setSysUser(SysUser sysUser) { this.sysUser = sysUser; }}
public class BaseEntity { //创建时间 private Date created; //更新时间 private Date updated; public Date getCreated() { return created; } public void setCreated(Date created) { this.created = created; } public Date getUpdated() { return updated; } public void setUpdated(Date updated) { this.updated = updated; }}
3,mapper
public interface RequirementMapper extends MapperSupport<Requirement>{ public List<Requirement> getAllRequirements();}
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.official.manager.mapper.RequirementMapper" > <resultMap id="requirement" type="com.official.manager.model.Requirement" > <!-- WARNING - @mbg.generated --> <id column="id" property="id" jdbcType="INTEGER" /> <result column="user_id" property="userId" jdbcType="INTEGER" /> <result column="hardware_type_id" property="hardwareTypeId" jdbcType="INTEGER" /> <result column="req_file_id" property="reqFileId" jdbcType="INTEGER" /> <result column="schedule" property="schedule" jdbcType="INTEGER"/> <result column="title" property="title" jdbcType="VARCHAR" /> <result column="hardware_type_name" property="hardwareTypeName" jdbcType="VARCHAR" /> <result column="hardware_connect" property="hardwareConnect" jdbcType="VARCHAR" /> <result column="content" property="content" jdbcType="VARCHAR" /> <result column="created" property="created" jdbcType="TIMESTAMP" /> <result column="updated" property="updated" jdbcType="TIMESTAMP" /> </resultMap> <resultMap id="allRequirement" type="com.official.manager.model.Requirement" > <!-- WARNING - @mbg.generated --> <id column="id" property="id" jdbcType="INTEGER" /> <id column="u_id" property="userId" jdbcType="INTEGER" /> <result column="schedule" property="schedule" jdbcType="INTEGER"/> <result column="title" property="title" jdbcType="VARCHAR" /> <result column="content" property="content" jdbcType="VARCHAR" /> <result column="hardware_type_name" property="hardwareTypeName" jdbcType="VARCHAR" /> <result column="hardware_connect" property="hardwareConnect" jdbcType="VARCHAR" /> <result column="time" property="created" jdbcType="TIMESTAMP" /> <association property="sysUser" javaType="com.official.manager.model.SysUser"> <id column="user_id" property="id" jdbcType="INTEGER" /> <result column="user_name2" jdbcType="VARCHAR" property="username" /> <result column="user_company" jdbcType="VARCHAR" property="company" /> <result column="user_email" jdbcType="VARCHAR" property="email" /> <result column="user_tel" jdbcType="VARCHAR" property="tel" /> </association> <collection property="cooperates" ofType="com.official.manager.model.Cooperate"> <id column="c_id" property="id" jdbcType="INTEGER" /> <result column="requirement_id" property="requirementId" jdbcType="INTEGER" /> <result column="illustration" property="illustration" jdbcType="VARCHAR" /> <result column="user_name" property="userName" jdbcType="VARCHAR" /> <result column="created" property="created" jdbcType="TIMESTAMP" /> <association property="user" javaType="com.official.manager.model.SysUser"> <id column="s_id" property="id" jdbcType="INTEGER" /> <result column="username" jdbcType="VARCHAR" property="username" /> <result column="company" jdbcType="VARCHAR" property="company" /> <result column="email" jdbcType="VARCHAR" property="email" /> <result column="tel" jdbcType="VARCHAR" property="tel" /> </association> </collection> </resultMap> <select id="getAllRequirements" resultMap="allRequirement"> select r.id,r.user_id u_id, r.content,r.created time,r.hardware_connect,r.hardware_type_name,r.title,r.`schedule`, c.illustration,c.user_name,c.created,c.id c_id, s.username,s.company,s.email,s.tel,s.id s_id, user.username user_name2,user.company user_company,user.email user_email,user.tel user_tel from requirement r left join cooperate c on r.id=c.requirement_id left join sys_user s on c.user_id=s.id left join sys_user user on r.user_id=user.id </select></mapper>
两张表的查询结果一定不能出现相同的字段,如果有,需要使用别名加以区分;查询语句中的字段,在映射关系中一定要有。
阅读全文
0 0
- mybatis多表查询
- mybatis多表查询
- MyBatis多表查询
- Mybatis多表查询
- mybatis多表查询
- 【Mybatis】多表查询
- mybatis多表查询
- mybatis多表复杂查询
- mybatis的多表查询
- mybatis多表查询操作
- mybatis多表关联查询
- mybatis多表关联查询
- MyBatis多表关联查询
- Mybatis的多表查询
- Mybatis多表关联查询
- spring-mybatis多表查询
- mybatis 多表联合查询
- mybatis分页多表查询
- python format
- 多线程死锁的产生原因及避免
- 计算机网络最简单的定义
- Ubuntu 16.04 Apache https设置及SSL免费证书安装
- 帧率设置 及在游戏运行时显示帧率
- mybatis多表查询
- Java知识点简记(1)面向对象
- jQuery--9.$.ajax(),表单序列化,formdata
- debug心得(一)
- 启发式搜索技术A* (A* Pathfinding for Beginners)
- androidStudio开发过程中minSdk(API 26) > deviceSdk(API 19)解决办法
- 腾讯前端面试题集锦
- 盒子模型——盒子阴影box-shadow
- Git push与pull的默认行为