spring boot mybatis批量修改

前言:之前的批量修改是在实体类里面再引入一个实体类 ,数据获取十分麻烦复杂,现在我们可以将前端传来的数据全部封装成字符串,数据用逗号隔开

举个栗子:

在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>

猜你喜欢

转载自blog.csdn.net/qq_33355858/article/details/81701856