MyBatis一對(duì)一級(jí)聯(lián)更新問(wèn)題小結(jié)
一、概述
日常工作中經(jīng)常會(huì)涉及到一對(duì)一級(jí)聯(lián)更新的問(wèn)題,例如:更新員工信息時(shí)也需要更新員工所在的部門(mén)信息,那么這種情況下就涉及到了MyBatis的級(jí)聯(lián)更新問(wèn)題。
二、代碼實(shí)戰(zhàn)
2.1、pom
<dependencies> <!-- springboot --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency> <!-- 數(shù)據(jù)源 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.26</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.3.1</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.10</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <!-- 工具 --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.30</version> </dependency> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.8.21</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-collections4</artifactId> <version>4.4</version> </dependency> <dependency> <groupId>com.alibaba.fastjson2</groupId> <artifactId>fastjson2</artifactId> <version>2.0.25</version> </dependency> </dependencies>
2.2、yml
server:
port: 9999
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/20231018_redis?useSSL=false&useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT
username: root
password: 123456
mybatis:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: org.stat.entity.model
configuration:
map-underscore-to-camel-case: true
logging:
level:
org:
star:
mapper: debug
2.3、主啟動(dòng)
/**
* @Author : 一葉浮萍?xì)w大海
* @Date: 2023/12/10 12:44
* @Description:
*
*/
@MapperScan(basePackages = "org.star.mapper")
@SpringBootApplication
public class SpringbootMybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootMybatisApplication.class, args);
}
}2.4、DepartmentDO
/**
* @Author : 一葉浮萍?xì)w大海
* @Date: 2023/12/10 12:48
* @Description:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@ToString(callSuper = true)
public class DepartmentDO implements Serializable {
/**
* 編號(hào)
*/
private Integer id;
/**
* 部門(mén)名稱(chēng)
*/
private String departmentName;
}2.5、EmployeeDO
/**
* @Author : 一葉浮萍?xì)w大海
* @Date: 2023/12/10 15:38
* @Description:
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@ToString(callSuper = true)
public class EmployeeDO implements Serializable {
/**
* 員工編號(hào)
*/
private Integer id;
/**
* 姓名
*/
private String name;
/**
* 年齡
*/
private Integer age;
/**
* 部門(mén)
*/
private DepartmentDO department;
}2.6、EmployeeMapper
/**
* @Author : 一葉浮萍?xì)w大海
* @Date: 2023/12/10 15:40
* @Description:
*/
public interface EmployeeMapper {
/**
* 級(jí)聯(lián)更新員工信息(更新員工信息 & 部門(mén)信息)
* @param param
*/
void updateEmployeeCascade(EmployeeDO param);
}2.7、EmployeeMapper.xml
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.star.mapper.EmployeeMapper">
<update id="updateEmployeeCascade">
update employee e left join department d
on e.department_id = d.id
<set>
<if test="name != null and name != ''">
e.name = #{name},
</if>
<if test="age != null">
e.age = #{age},
</if>
<if test="department.departmentName != null and department.departmentName != ''">
d.department_name = #{department.departmentName}
</if>
</set>
where e.id = #{id}
</update>
</mapper>2.8、EmployeeMapperTest
/**
* @Author : 一葉浮萍?xì)w大海
* @Date: 2023/12/10 15:42
* @Description:
*/
@SpringBootTest
public class EmployeeMapperTest {
@Autowired
private EmployeeMapper employeeMapper;
@Test
public void updateEmployeeTest() {
EmployeeDO employeeDO = new EmployeeDO()
.setId(2)
.setName("劉亦菲")
.setAge(18)
.setDepartment(
new DepartmentDO()
.setId(2)
.setDepartmentName("市場(chǎng)部222")
);
employeeMapper.updateEmployeeCascade(employeeDO);
}
}到此這篇關(guān)于MyBatis一對(duì)一級(jí)聯(lián)更新問(wèn)題小結(jié)的文章就介紹到這了,更多相關(guān)MyBatis一對(duì)一級(jí)聯(lián)更新內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- mybatisplus實(shí)現(xiàn)自動(dòng)創(chuàng)建/更新時(shí)間的項(xiàng)目實(shí)踐
- mybatis如何批量更新list對(duì)象
- MyBatisPlus防全表更新與刪除的實(shí)現(xiàn)示例
- 關(guān)于批量插入或更新數(shù)據(jù)(MyBatis-plus框架)
- mybatis中批量更新多個(gè)字段的2種實(shí)現(xiàn)方法
- 基于mybatis進(jìn)行批量更新兩種方法
- mybatis-plus批量更新updateBatchById問(wèn)題
- Mybatis-plus如何更新Null字段詳解
- MybatisPlus更新時(shí)部分失敗的問(wèn)題解決
- Mybatis使用update更新值為null時(shí)不生效問(wèn)題解決
相關(guān)文章
Java-lambda表達(dá)式入門(mén)看這一篇就夠了
lambda表達(dá)式最簡(jiǎn)單的作用就是用于簡(jiǎn)化創(chuàng)建匿名內(nèi)部類(lèi)對(duì)象,Lambda表達(dá)式是一個(gè)可傳遞的代碼塊,可以在以后執(zhí)行一次或多次,下面通過(guò)本文給大家介紹Java-lambda表達(dá)式入門(mén)教程,感興趣的朋友一起看看吧2021-05-05
Java?Socket編程從零到實(shí)戰(zhàn)詳解(完整實(shí)戰(zhàn)案例)
這篇文章主要介紹了Java?Socket編程從零到實(shí)戰(zhàn)詳解,本文給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2025-04-04
java實(shí)現(xiàn)波雷費(fèi)密碼算法示例代碼
這篇文章主要介紹了java實(shí)現(xiàn)波雷費(fèi)密碼算法示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01
Minio環(huán)境部署過(guò)程及如何配置HTTPS域名
MinIO?是一個(gè)對(duì)象存儲(chǔ)系統(tǒng),數(shù)據(jù)需要存儲(chǔ)在宿主機(jī)上,容器的重啟不影響數(shù)據(jù),因此我們需要為?MinIO?創(chuàng)建一個(gè)掛載目錄,用于持久化存儲(chǔ)數(shù)據(jù),本文詳細(xì)介紹了如何部署MinIO,并通過(guò)配置反向代理和HTTPS來(lái)提升其安全性,感興趣的朋友一起看看吧2025-03-03
RedisTemplate中opsForValue和opsForList方法的使用詳解
這篇文章主要介紹了RedisTemplate中opsForValue和opsForList方法的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
Java使用httpRequest+Jsoup爬取紅藍(lán)球號(hào)碼
本文將結(jié)合實(shí)例代碼,介紹Java使用httpRequest+Jsoup爬取紅藍(lán)球號(hào)碼,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07
SpringBoot解決數(shù)據(jù)庫(kù)時(shí)間和返回時(shí)間格式不一致的問(wèn)題
這篇文章主要介紹了SpringBoot解決數(shù)據(jù)庫(kù)時(shí)間和返回時(shí)間格式不一致的問(wèn)題,文章通過(guò)代碼示例和圖文結(jié)合的方式講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)和工作有一定的幫助,需要的朋友可以參考下2024-03-03

