環境如下:
SpringBoot2.6.4
Mysql8.0
Idea 2020.3
一、添加依賴
<!-- mybatisPlus依賴 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<!-- lombok依賴 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- mysql依賴 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
二、配置
application.yml文件
spring:
datasource:
#數據源類型
type: com.zaxxer.hikari.HikariDataSource
#配置連接信息
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8&characterEncoding=utf-8&useSSL=false
username: root
password: 123456
#配置日志
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
三、創建類和接口
User實體類
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
UserMapper接口
@Repository
public interface UserMapper extends BaseMapper<User> {
}
SpringBoot主程序類
@SpringBootApplication
@MapperScan("com.snow.mybatisplus.mapper")
public class MybatisPlusDemo1Application {
public static void main(String[] args) {
SpringApplication.run(MybatisPlusDemo1Application.class, args);
}
}
四、測試
測試類
@SpringBootTest
public class MybatisPlusTest {
@Autowired
private UserMapper userMapper;
查詢功能
/**
* 測試查詢功能
*/
@Test
public void testSelect(){
//查詢全部記錄
/*List<User> list = userMapper.selectList(null);
list.forEach(System.out::println);*/
//根據id查詢
/*User user = userMapper.selectById(1);
System.out.println(user);*/
//根據map條件查詢
Map<String,Object> map = new HashMap<>();
map.put("name","小劉");
List<User> list = userMapper.selectByMap(map);
list.forEach(System.out::println);
}
添加功能
/**
* 測試添加功能
*/
@Test
public void testInsert(){
User user = new User();
user.setName("小王");
user.setAge(22);
user.setEmail("wang@qq.com");
int insert = userMapper.insert(user);
System.out.println("受影響的行數:"+insert);
System.out.println(user.getId());
}
刪除功能
/**
* 測試刪除功能
*/
@Test
public void testDelete(){
//根據id刪除
// int delete = userMapper.deleteById(1506133530385633281L);
//根據實體類刪除
User user = new User();
user.setName("小王");
int count = userMapper.deleteById(user);
//根據id批量刪除
// int deleteBatchIds = userMapper.deleteBatchIds(Arrays.asList(1506134546514542593l,1506134570237485058l));
//根據map集合設置的條件刪除(必須全滿足)
/*Map<String,Object> map = new HashMap<>();
map.put("age",25);
map.put("name","小王");
int count = userMapper.deleteByMap(map);*/
System.out.println("受影響的行數:"+count);
}
修改功能
/**
* 測試修改功能
*/
@Test
public void testUpdate(){
User user = new User();
user.setId(1506135641521471490L);
user.setName("小劉");
user.setAge(19);
int count = userMapper.updateById(user);
System.out.println(count);
}
}
五、常用注解
-
@TableName
在實體類類型上添加@TableName("t_user")
,標識實體類對應的表 -
@tableId
- value屬性
在實體類中屬性上通過@TableId
將其標識為主鍵 - type屬性
type屬性用來定義主鍵策略,常用主鍵策略:
可以直接在全局配置中配置主鍵策略
- value屬性
#mybatis-plus配置
mybatis-plus:
#配置全局主鍵策略
global-config:
db-config:
# 配置mybatis-plus的主鍵策略
id-type: auto
# 配置mybatis-plus操作表的前綴
# table-prefix: t_
-
@tableField
若實體類中的屬性和表中的字段不一致時,在實體類屬性上使用@TableField("username")
設置屬性所對應的字段名 -
@tableLogic
在是否刪除字段上添加@tableLogic
注解實現邏輯刪除功能。此時刪除功能和查詢功能都是加上是否刪除的條件
User實體類:
@TableName("user")
public class User {
@TableId(value = "id")
private Long id;
@TableField(value = "user_name")
private String name;
private Integer age;
private String email;
@TableLogic
private Integer isDeleted;
}