spring boot mybatis批量修改
前言:之前的批量修改是在实体类里面再引入一个实体类 ,数据获取十分麻烦复杂,现在我们可以将前端传来的数据全部封装成字符串,数据用逗号隔开举个栗子:在maven中加入引用:也就是加入lombok的jar包<dependency><groupId>org.projectlombok</groupId>...
·
前言:之前的批量修改是在实体类里面再引入一个实体类 ,数据获取十分麻烦复杂,现在我们可以将前端传来的数据全部封装成字符串,数据用逗号隔开
举个栗子:
在maven中加入引用:也就是加入lombok的jar包
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.14.4</version>
</dependency>
1.先写Controller层 (就是接收数据没有啥技术含量)跳过
2.写一个传入参数的实体类中:JGTypequeryParams(其中purpose,loadbear就是要将多条数据封装到一起)
@Data
@EqualsAndHashCode(callSuper = false)
@NoArgsConstructor
//上面三行注释是lombok插件引用 作用是不用自己写set/get方法(其实也可以快捷键生成,但是这样写代码更加简洁)
public class JGTypequeryParams{
private Integer moduleid;
private Integer groupid;
private String site;
private String purpose;
private String loadbear;
private String code;
}
3.写一个返回参数的实体类GroupListDevVO:
@Data
@EqualsAndHashCode(callSuper = false)
@NoArgsConstructor
public class GroupListDev implements Serializable{/**
*
*/
private static final long serialVersionUID = 1L;
private Integer id;
private double x;
private double y;
private Integer state;
private String site;
private String picpath;
private String lat;
private String lng;
private String alarmstateName;
private String contacts;
private String code;
private String devnum;
}
4.在实现层处理:切割字符串
@Override
public List<GroupListDev> GroupListDev(JGTypequery jGTypequery) throws MyException {
//初定两个数组
String[] purpose = null;
String[] loadbear = null;
//取出传入的两个多条件参数
String p = jGTypequery.getPurpose();
String l = jGTypequery.getLoadbear();
//切割支付窜包装成数组
if (p != null && !"".equals(p)) {
if (p.equals("0")) {
p = null;
} else {
purpose = p.split(",");
}
}
if (l != null && !l.equals("")) {
if (l.equals("0")) {
l = null;
} else {
loadbear = l.split(",");
}
}
//将数据封装到Mapper层并返回
return wellCoverMapper.GroupListDev(jGTypequery.getModuleid(), jGTypequery.getGroupid(), jGTypequery.getSite(),
purpose, loadbear,jGTypequery.getCode());
}
5.编写Mapper层:
List<GroupListDev> GroupListDev(@Param("moduleid") Integer moduleid, @Param("groupid") Integer groupid,
@Param("site") String site, @Param("purpose") String[] purpose, @Param("loadbear") String[] loadbear,@Param("code") String code);
//purpose和loadbear是数组类型别搞错了
6.编写Mapper.xml(这条SQL还是很有技术含量的 遍历数组+同一个关键字查询两种 )
<select id="GroupListDev" parameterType="java.util.List"
resultType="com.hotcomm.prevention.bean.mysql.datashow.sj.GroupListDev">
SELECT j.id as id , j.x as x , j.y as y , j.state as state ,
j.lat as
lat,j.lng as lng ,j.code as code,j.devnum as devnum,
c.site as site ,
c.picpath as picpath
FROM t_item_pic c
LEFT JOIN
t_dev_item_pic p
on
p.item_pic_id = c.id and p.isdelete = 0
LEFT JOIN
t_device_group_relation g on g.moduleid = #{moduleid} and g.isdelete =
0 and g.isenable = 1 and g.deviceid = p.dev_id
LEFT JOIN
t_device_all j
on j.id = p.dev_id
WHERE
<if test="groupid!=null and groupid!=''">
c.itemid = #{groupid} and g.groupid =
c.itemid and
</if>
c.isdelete = 0 and j.moduleid = #{moduleid}
<if test="code != null and code != ''">
AND ( j.`code` LIKE CONCAT('%', #{code}, '%')
OR j.devnum LIKE CONCAT('%', #{code}, '%') )
</if>
<if test="site!=null and site!=''">
and c.site = #{site}
</if>
<if test=" purpose!='' and purpose!=null ">
and j.jg_purpose in
<foreach collection="purpose" item="item" index="index" open="("
separator="," close=")">
#{item}
</foreach>
</if>
<if test="loadbear!=null and loadbear!='' ">
and j.jg_loadbear in
<foreach collection="loadbear" item="item" index="index"
open="(" separator="," close=")">
#{item}
</foreach>
</if>
</select>
更多推荐
已为社区贡献5条内容
所有评论(0)