天天看點

Mybatis-Plus通用枚舉

  • Mybatis+Mybatis-Plus
  • Spring+Mybatis+Mybatis-Plus
  • Spring Boot+Mybatis+Mybatis-Plus
  • Mybatis-Plus通用CRUD
  • Mybatis-Plus配置
  • Mybatis-Plus條件構造器
  • Mybatis-Plus ActiveRecord模式CRUD
  • Mybatis-Plus Oracle 主鍵Sequence
  • Mybatis-Plus插件
  • Mybatis-Plus Sql 注入器
  • Mybatis-Plus自動填充功能
  • Mybatis-Plus邏輯删除

解決了繁瑣的配置,讓 mybatis 優雅的使用枚舉屬性!

修改表結構

定義枚舉

public enum SexEnum implements IEnum<Integer> {

	MAN(1, "男"), WOMAN(2, "女");

	private int value;
	private String desc;

	SexEnum(int value, String desc) {
		this.value = value;
		this.desc = desc;
	}

	@Override
	public Integer getValue() {
		return this.value;
	}

	@Override
	public String toString() {
		return this.desc;
	}

}
           

配置

# 枚舉包掃描
mybatis-plus.type-enums-package=cn.com.javakf.enums
           

修改實體

測試

插入
@Test
public void testInsert() {
	User user = new User();
	user.setUserName("diaochan");
	user.setPassword("123456");
	user.setAge(20);
	user.setName("貂蟬");
	user.setMail("[email protected]");
	user.setVersion(1);
	user.setSex(SexEnum.WOMAN); // 使用的是枚舉

	// 調用AR的insert方法進行插入資料
	boolean insert = user.insert();
	System.out.println("result => " + insert);
}
           
SQL
[main] [cn.com.javakf.mapper.UserMapper.insert]-[DEBUG] ==>  Preparing: INSERT INTO tb_user ( user_name, password, name, age, email, version, sex ) VALUES ( ?, ?, ?, ?, ?, ?, ? ) 
[main] [cn.com.javakf.mapper.UserMapper.insert]-[DEBUG] ==> Parameters: diaochan(String), 123456(String), 貂蟬(String), 20(Integer), [email protected].com(String), 1(Integer), 2(Integer)
[main] [cn.com.javakf.mapper.UserMapper.insert]-[DEBUG] <==    Updates: 1
 Time:43 ms - ID:cn.com.javakf.mapper.UserMapper.insert
Execute SQL:
    INSERT 
    INTO
        tb_user
        ( user_name, password, name, age, email, version, sex ) 
    VALUES
        ( 'diaochan', '123456', '貂蟬', 20, '[email protected]', 1, 2 )

[main] [org.mybatis.spring.SqlSessionUtils]-[DEBUG] Closing non transactional SqlSession [[email protected]]
result => true
           
Mybatis-Plus通用枚舉
查詢
@Test
public void testSelectById() {
	User user = new User();
	user.setId(11L);

	User user1 = user.selectById();
	System.out.println(user1);
}
           
SQL
[main] [cn.com.javakf.mapper.UserMapper.selectById]-[DEBUG] ==>  Preparing: SELECT id,user_name,name,age,email AS mail,version,deleted,sex FROM tb_user WHERE id=? AND deleted=0 
[main] [cn.com.javakf.mapper.UserMapper.selectById]-[DEBUG] ==> Parameters: 12(Long)
[main] [cn.com.javakf.mapper.UserMapper.selectById]-[DEBUG] <==      Total: 1
[main] [org.mybatis.spring.SqlSessionUtils]-[DEBUG] Closing non transactional SqlSession [[email protected]]
User(id=12, userName=diaochan, password=null, name=貂蟬, age=20, [email protected].com, address=null, version=1, deleted=0, sex=女)
           
從測試可以看出,可以很友善的使用枚舉了。
條件查詢
@Test
public void testSelectBySex() {
	User user = new User();

	QueryWrapper<User> wrapper = new QueryWrapper<>();
	wrapper.eq("sex", SexEnum.WOMAN); // 查詢性别為女的資料

	List<User> users = user.selectList(wrapper);
	for (User user1 : users) {
		System.out.println(user1);
	}
}
           
SQL
[main] [cn.com.javakf.mapper.UserMapper.selectList]-[DEBUG] ==>  Preparing: SELECT id,user_name,name,age,email AS mail,version,deleted,sex FROM tb_user WHERE deleted=0 AND sex = ? 
[main] [cn.com.javakf.mapper.UserMapper.selectList]-[DEBUG] ==> Parameters: 2(Integer)
[main] [cn.com.javakf.mapper.UserMapper.selectList]-[DEBUG] <==      Total: 1
 Time:15 ms - ID:cn.com.javakf.mapper.UserMapper.selectList
Execute SQL:
    SELECT
        id,
        user_name,
        name,
        age,
        email AS mail,
        version,
        deleted,
        sex 
    FROM
        tb_user 
    WHERE
        deleted=0 
        AND sex = 2

[main] [org.mybatis.spring.SqlSessionUtils]-[DEBUG] Closing non transactional SqlSession [[email protected]]
User(id=12, userName=diaochan, password=null, name=貂蟬, age=20, [email protected].com, address=null, version=1, deleted=0, sex=女)