java mybatis mysql_Mybatis与mysql一对多映射,以及java类编写

前言

因为懒惰,在一个查询中,一个表被联查了两次,提供一种不需要再业务层进行二次调用的方式。

提示:以下是本篇文章正文内容,下面案例可供参考

一、Mybatis是什么?

二、使用步骤

1.方式一代码如下

1.1Java类 1->n(1对多,1对1)

public class Project extends BaseEntity{

private static final long serialVersionUID = 1L;

private Long projectId;

/** 项目名称 */

@Excel(name = "项目名称")

private String projectName;

/** 所属部门id */

@Excel(name = "所属部门id")

private Long deptId;

private Long constrDeptId;

/** 所属部门*/

private Dept dept;

private Dept constructionTeam;

/**项目阶段*/

private List projectStages = new ArrayList<>();

/** -1:未开始,0:已开始,1:已结束 */

@Excel(name = "-1:未开始,0:已开始,1:已结束")

private String status;

/** 计划开始时间 */

@JsonFormat(pattern = "yyyy-MM-dd")

@Excel(name = "计划开始时间", width = 30, dateFormat = "yyyy-MM-dd")

private Date planStartTime;

/** 实际开始时间 */

@JsonFormat(pattern = "yyyy-MM-dd")

@Excel(name = "实际开始时间", width = 30, dateFormat = "yyyy-MM-dd")

private Date actualStartTime;

/** 计划结束时间 */

@JsonFormat(pattern = "yyyy-MM-dd")

@Excel(name = "计划结束时间", width = 30, dateFormat = "yyyy-MM-dd")

private Date planEndTime;

/** 实际结束时间 */

@JsonFormat(pattern = "yyyy-MM-dd")

@Excel(name = "实际结束时间", width = 30, dateFormat = "yyyy-MM-dd")

private Date actualEndTime;

}

1.1.1重点标注

1.2 xml代码

/p>

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select project_id, project_name, dept_id, constr_dept_id, status, plan_start_time, actual_start_time, plan_end_time, actual_end_time, del_flag, create_by, create_time, update_by, update_time, remark from _project

select project_id, project_name, dept_id, constr_dept_id, status, plan_start_time,

actual_start_time, plan_end_time, actual_end_time, del_flag, create_by, create_time,

update_by, update_time, remark,

d.dept_name,ur.dept_name as team_dept_name,r.pro_stage_name,r.pro_stage_name,r.constr_dept_id

from _project

left join _dept d on dept_id = d.dept_id

left join _dept ur on constr_dept_id = ur.dept_id

left join _project_stage r on project_id = r.project_id

and project_name like concat('%', #{projectName}, '%')

and dept_id = #{deptId}

and constr_dept_id = #{constrDeptId}

and status = #{status}

and plan_start_time = #{planStartTime}

and actual_start_time = #{actualStartTime}

and plan_end_time = #{planEndTime}

and actual_end_time = #{actualEndTime}

where project_id = #{projectId}

insert into _project

project_id,

project_name,

dept_id,

constr_dept_id,

status,

plan_start_time,

actual_start_time,

plan_end_time,

actual_end_time,

del_flag,

create_by,

create_time,

update_by,

update_time,

remark,

#{projectId},

#{projectName},

#{deptId},

#{constrDeptId},

#{status},

#{planStartTime},

#{actualStartTime},

#{planEndTime},

#{actualEndTime},

#{delFlag},

#{createBy},

#{createTime},

#{updateBy},

#{updateTime},

#{remark},

update _project

project_name = #{projectName},

dept_id = #{deptId},

constr_dept_id = #{constrDeptId},

status = #{status},

plan_start_time = #{planStartTime},

actual_start_time = #{actualStartTime},

plan_end_time = #{planEndTime},

actual_end_time = #{actualEndTime},

del_flag = #{delFlag},

create_by = #{createBy},

create_time = #{createTime},

update_by = #{updateBy},

update_time = #{updateTime},

remark = #{remark},

where project_id = #{projectId}

delete from _project where project_id = #{projectId}

delete from _project where project_id in

#{projectId}

1.2.1重点标注

要将你所需要的字段清楚的写出来,并且名相同&&值不同的字段要起别名;

如果你只想要某个表的name/特殊字段,不想用对象封装,也可以用这种方式:

2.方式二代码如下:

代码如下(示例):

2.1java:

public class Project extends BaseEntity{

private static final long serialVersionUID = 1L;

/** $column.columnComment */

private Long projectId;

/** 项目名称 */

@Excel(name = "项目名称")

private String projectName;

/** 所属部门id */

@Excel(name = "所属部门id")

private Long deptId;

private Long constrDeptId;

private String deptName;

private String teamDeptName;

/** 所属部门*/

private Dept dept;

private Dept constructionTeam;

/**项目阶段*/

private List projectStages = new ArrayList<>();

/** -1:未开始,0:已开始,1:已结束 */

@Excel(name = "-1:未开始,0:已开始,1:已结束")

private String status;

/** 计划开始时间 */

@JsonFormat(pattern = "yyyy-MM-dd")

@Excel(name = "计划开始时间", width = 30, dateFormat = "yyyy-MM-dd")

private Date planStartTime;

/** 实际开始时间 */

@JsonFormat(pattern = "yyyy-MM-dd")

@Excel(name = "实际开始时间", width = 30, dateFormat = "yyyy-MM-dd")

private Date actualStartTime;

/** 计划结束时间 */

@JsonFormat(pattern = "yyyy-MM-dd")

@Excel(name = "计划结束时间", width = 30, dateFormat = "yyyy-MM-dd")

private Date planEndTime;

/** 实际结束时间 */

@JsonFormat(pattern = "yyyy-MM-dd")

@Excel(name = "实际结束时间", width = 30, dateFormat = "yyyy-MM-dd")

private Date actualEndTime;

}

2.2 xml:

/p>

PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select project_id, project_name, dept_id, constr_dept_id, status, plan_start_time,

actual_start_time, plan_end_time, actual_end_time, del_flag, create_by, create_time,

update_by, update_time,

d.dept_name, ur.dept_name as team_dept_name

from _project

left join _dept d on dept_id = d.dept_id

left join _dept ur on constr_dept_id = ur.dept_id

left join _project_stage r on project_id = r.project_id

总结一对一/一对多可以将对象封装到对象中,直接通过多表联查查询;

也可以将需要的属性拿出来,通过< resultMap > 映射出来

您也可以构造一个VO对象,然后在业务层多次调用数据库,构造出前端需要的数据;

尽量不要懒惰哦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值