Mybatis笔记 -- 多表关联插入、更新、查询实例

在DeviceModel添加需要关联的实体 DeviceModelAttr

Copy
private List<DeviceModelAttr> deviceModelAttr;

DeviceModelMapper.xml 中配置关联实体 DeviceModelAttr

Copy
<collection property="deviceModelAttr" ofType="com.industry.txsp.entity.DeviceModelAttr"> <id property="modelAttrId" column="model_attr_id"/> <result property="dmAttrType" column="dm_attr_type"/> <result property="attrValue" column="attr_value"/> <result property="modelId" column="model_id"/> </collection>

在DeviceModelServiceImpl 中实现,关联插入,关联查询,关联更新

Copy
@Service public class DeviceModelServiceImpl implements DeviceModelService { private static final Logger logger = LoggerFactory.getLogger(DeviceModelService.class); @Autowired private DeviceModelMapper deviceModelMapper; @Autowired private DeviceModelAttrMapper deviceModelAttrMapper; @Override public PageInfo<DeviceModel> query(DeviceModel deviceModel, Integer pageSize, Integer pageNum) { if (pageNum == null || pageNum.equals("")) { pageNum = 1; } if (pageSize == null || pageSize.equals("")) { pageSize = 10; } //开启分页 PageHelper.startPage(pageNum, pageSize); List<DeviceModel> list = deviceModelMapper.query(deviceModel); logger.info("queryDeviceModel=> effect line count is " + list.size()); return new PageInfo<>(list); } @Override public DeviceModel findById(String modelId) { return deviceModelMapper.findById(modelId); } @Override public int create(DeviceModel deviceModel) { IUser user = AdminSecurityUtils.getSecurityUser(); String uuid = UuidUtil.getRandomUUID(); deviceModel.setModelId(uuid); deviceModel.setCreator(user.getName()); deviceModel.setCreateId(user.getId()); deviceModel.setCreateTime(new Date()); deviceModel.setUpdateTime(new Date()); deviceModel.setIsDeleted(0); for (DeviceModelAttr deviceModelAttr : deviceModel.getDeviceModelAttr()) { deviceModelAttr.setModelId(uuid); deviceModelAttr.setModelAttrId(UuidUtil.getRandomUUID()); deviceModelAttrMapper.create(deviceModelAttr); } return deviceModelMapper.create(deviceModel); } @Override public int update(DeviceModel deviceModel) { for(DeviceModelAttr deviceModelAttr : deviceModel.getDeviceModelAttr()){ deviceModelAttrMapper.update(deviceModelAttr); } return deviceModelMapper.update(deviceModel); }

完整DeviceModelMapper.xml

Copy
<?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.industry.txsp.mapper.DeviceModelMapper"> <!-- 可根据自己的需求,是否要使用 --> <resultMap type="com.industry.txsp.entity.DeviceModel" id="deviceModelMap"> <result property="modelId" column="model_id"/> <result property="modelName" column="model_name"/> <result property="createId" column="create_id"/> <result property="creator" column="creator"/> <result property="createTime" column="create_time"/> <result property="updateTime" column="update_time"/> <result property="isDeleted" column="is_deleted"/> <collection property="deviceModelAttr" ofType="com.industry.txsp.entity.DeviceModelAttr"> <id property="modelAttrId" column="model_attr_id"/> <result property="dmAttrType" column="dm_attr_type"/> <result property="attrValue" column="attr_value"/> <result property="modelId" column="model_id"/> </collection> </resultMap> <select id="query" resultMap="deviceModelMap"> SELECT * FROM device_model dm,device_model_attr dma <where> <if test="deviceModel.modelId !=null and deviceModel.modelId !=''"> AND model_id = #{deviceModel.modelId} </if> <if test="deviceModel.modelName !=null and deviceModel.modelName !=''"> AND model_name = #{deviceModel.modelName} </if> <if test="deviceModel.createId !=null and deviceModel.createId !=''"> AND create_id = #{deviceModel.createId} </if> <if test="deviceModel.creator !=null and deviceModel.creator !=''"> AND creator = #{deviceModel.creator} </if> <if test="deviceModel.createTime !=null and deviceModel.createTime !=''"> AND create_time = #{deviceModel.createTime} </if> <if test="deviceModel.updateTime !=null and deviceModel.updateTime !=''"> AND update_time = #{deviceModel.updateTime} </if> <if test="deviceModel.isDeleted !=1"> AND is_deleted = 0 </if> AND dm.model_id = dma.model_id </where> </select> <select id="findById" resultMap="deviceModelMap"> SELECT * FROM device_model dm,device_model_attr dma WHERE dm.model_id = #{modelId} and dm.is_deleted =0 and dm.model_id = dma.model_id </select> <!--增加--> <insert id="create" parameterType="com.bonc.industry.txsp.entity.DeviceModel"> INSERT INTO device_model (model_id,model_name,create_id,creator,create_time,update_time,is_deleted) VALUES (#{modelId},#{modelName},#{createId},#{creator},#{createTime},#{updateTime},#{isDeleted}) </insert> <!--更新--> <update id="update" parameterType="com.bonc.industry.txsp.entity.DeviceModel"> UPDATE device_model SET <if test="modelId !=null and modelId !=''"> model_id = #{modelId} </if> <if test="modelName !=null and modelName !=''"> ,model_name = #{modelName} </if> <if test="createId !=null and createId !=''"> ,create_id = #{createId} </if> <if test="creator !=null and creator !=''"> ,creator = #{creator} </if> <if test="createTime !=null"> ,create_time = #{createTime,jdbcType=TIMESTAMP} </if> <if test="updateTime !=null"> ,update_time = #{updateTime,jdbcType=TIMESTAMP} </if> <if test="isDeleted !=null and isDeleted !=''"> ,is_deleted = #{isDeleted} </if> WHERE model_id = #{modelId} </update> </mapper>
posted @   指掀涛澜  阅读(5948)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示