文章目錄:
1.MyBatis-Plus註解
2.準備實體類和表結構
3.MyBatis-Plus增刪改查
4.MyBatis-Plus邏輯刪除
5.MyBatis-Plus樂觀鎖插件
6.MyBatis-Plus其他
7.MyBatis-Plus代碼生成器
8.MyBatis-Plus配置類
一、新增
User user = new User();
user.setAge(22).setName("abc").setEmail("[email protected]");
userMapper.insert(user);
/*
Preparing: INSERT INTO user ( ID, NAME, AGE, EMAIL, CREATE_TIME ) VALUES ( ?, ?, ?, ?, ? )
Parameters: 1213426563115225090(Long), abc(String), 22(Integer), [email protected](String), 2020-01-04 19:46:51.682(Timestamp)
*/
二、刪除
@Test
public void testDelete() {
// 根據 entity 條件,刪除記錄
userMapper.delete(new QueryWrapper<User>()
.lambda().gt(User::getAge,100));
/*
Preparing: DELETE FROM user WHERE (AGE > ?)
Parameters: 110(Integer)
*/
// 刪除(根據ID 批量刪除)
//userMapper.deleteBatchIds(Arrays.asList(1213428972445007874L,1213428972436619266L,1213428972428230658L));
/*
Preparing: DELETE FROM user WHERE ID IN ( ? , ? , ? )
Parameters: 1213428972445007874(Long), 1213428972436619266(Long), 1213428972428230658(Long)
*/
// 根據 ID 刪除
//userMapper.deleteById(1213428972411453441L);
/*
Preparing: DELETE FROM user WHERE ID=?
Parameters: 1213428972411453441(Long)
*/
// 根據 columnMap 條件,刪除記錄
// Map<String, Object> map = new HashMap<>();
// map.put("name", "abc84");
// map.put("email", "[email protected]");
// userMapper.deleteByMap(map);
/*
Preparing: DELETE FROM user WHERE name = ? AND email = ?
Parameters: abc84(String), [email protected](String)
*/
}
三、修改
@Test
public void testUpdate() {
// 根據 ID 修改
// userMapper.updateById(new User()
// .setAge(999)
// .setName("abc999")
// .setEmail("[email protected]")
// .setId(1213435727317135361L));
/*
Preparing: UPDATE user SET NAME=?, AGE=?, EMAIL=? WHERE ID=?
Parameters: abc999(String), 999(Integer), [email protected](String), 1213435727317135361(Long)
*/
// 根據 whereEntity 條件,更新記錄
userMapper.update(new User().setName("defg"),Wrappers.<User>lambdaUpdate()
.set(User::getEmail, "[email protected]")
.eq(User::getId, 1213435727082254338L)
.eq(User::getAge, 99));
/*
Preparing: UPDATE user SET NAME=?, EMAIL=? WHERE (ID = ? AND AGE = ?)
Parameters: defg(String), [email protected](String), 1213435727082254338(Long), 99(Integer)
*/
}
四、查詢
@Test
public void testSelect() {
// 根據 ID 查詢
// User user = userMapper.selectById(1213435727082254338L);
// System.out.println(user);
/*
Preparing: SELECT * FROM user WHERE ID=?
Parameters: 1213435727082254338(Long)
*/
// 根據 entity 條件,查詢一條記錄
// User user = userMapper.selectOne(new QueryWrapper<User>().lambda().eq(User::getId, 1213435727082254338L));
// System.out.println(user);
/*
Preparing: SELECT * FROM user WHERE (ID = ?)
Parameters: 1213435727082254338(Long)
// 執行結果不唯一時報錯:TooManyResultsException: Expected one result (or null) to be returned by selectOne(), but found: 100
*/
// 查詢(根據ID 批量查詢)
// List<User> users = userMapper.selectBatchIds(Arrays.asList(1213435727065477121L, 1213435727082254338L,
// 1213435727090642945L));
// users.forEach(System.out::println);
/*
Preparing: SELECT * FROM user WHERE ID IN ( ? , ? , ? )
Parameters: 1213435727065477121(Long), 1213435727082254338(Long), 1213435727090642945(Long)
*/
// 根據 entity 條件,查詢全部記錄
// 條件查詢官方文檔:https://mp.baomidou.com/guide/wrapper.html#abstractwrapper
// List<User> users = userMapper.selectList(new QueryWrapper<User>()
// .select( "id", "name")
// .lambda()
// .like(User::getEmail,"abc")
// .inSql(User::getId, "SELECT id FROM user WHERE age < 25")
// .between(User::getAge,22,99)
// // 主動調用or表示緊接着下一個方法不是用and連接!(不調用or則默認爲使用and連接)
// .or().eq(User::getName, "abc98")
// .last("limit 1"));
// users.forEach(System.out::println);
/*
Preparing: SELECT id,name FROM user WHERE (EMAIL LIKE ? AND ID IN (SELECT id FROM user WHERE age < 25) AND AGE BETWEEN ? AND ? OR NAME = ?) limit 1
Parameters: %abc%(String), 22(Integer), 99(Integer), abc98(String)
*/
// 查詢(根據 columnMap 條件)
// Map<String, Object> map = new HashMap<>();
// map.put("name", "abc70");
// map.put("email", "[email protected]");
// List<User> users = userMapper.selectByMap(map);
// users.forEach(System.out::println);
/*
Preparing: SELECT * FROM user WHERE name = ? AND email = ?
Parameters: abc70(String), [email protected](String)
*/
// 根據 Wrapper 條件,查詢全部記錄
// List<Map<String, Object>> maps = userMapper.selectMaps(null);
// maps.forEach(System.out::println);
/*
Preparing: SELECT * FROM user
*/
// 根據 Wrapper 條件,查詢全部記錄。注意: 只返回第一個字段的值
// List<Object> objects = userMapper.selectObjs(null);
// objects.forEach(System.out::println);
/*
Preparing: SELECT ID,NAME,AGE,EMAIL,DEL_FLAG,VERSION,CREATE_TIME FROM user
// 只返回了id字段的值。
*/
// 根據 entity 條件,查詢全部記錄(並翻頁)
// userMapper.selectPage(new Page<>(1, 5), Wrappers.<User>query().orderByAsc("age"));
/*
Preparing: SELECT * FROM user ORDER BY age ASC LIMIT ?,?
Parameters: 0(Long), 5(Long)
*/
// 根據 Wrapper 條件,查詢總記錄數
Integer count = userMapper.selectCount(null);
System.out.println(count);
/*
Preparing: SELECT COUNT( 1 ) FROM user
*/
}