MyBatis Plus 2.3 個人筆記-02-基本注解


 

  • 實體類注解
/*
 * MybatisPlus會默認使用實體類的類名到數據中找對應的表.
 *
 */
@TableName("tbl_employee")
public class Employee extends Model<Employee> {

    private static final long serialVersionUID = 1L;

    /*
	 * @TableId:
	 *   value: 指定表中的主鍵列的列名, 如果實體屬性名與列名一致,可以省略不指定.
	 *   type: 指定主鍵策略.  ID_WORKER 全局唯一ID,內容為空自動填充(默認配置)
	 */
    @TableId(value = "id", type = IdType.ID_WORKER)
    private Long id;

    private String lastName;

    private String email;

    private String gender;

    private Integer age;

    /**
     * 聲明該屬性不是數據庫中字段
     */
    @TableField(exist = false)
    private String notExist;

}
/* 省略get set */

 

  • 使用通用CURD方法
    •   刪除
	/**
	 * 通用 刪除操作
	 */
	@Test
	public void testCommonDelete() {
		//1 .根據id進行刪除
		Integer result = employeeMapper.deleteById(13);


/*
==>  Preparing: DELETE FROM tbl_employee WHERE id=?
==> Parameters: 13(Long)
<==    Updates: 0
*/
//2. 根據 條件進行刪除 // Map<String,Object> columnMap = new HashMap<>(); // columnMap.put("last_name", "MP"); // columnMap.put("email", "mp@atguigu.com"); // Integer result = employeeMapper.deleteByMap(columnMap); // System.out.println("result: " + result );

/*
==>  Preparing: DELETE FROM tbl_employee WHERE last_name = ? AND email = ?
==> Parameters: MP(String), mp@atguigu.com(String)
<==    Updates: 0
*/
//3. 批量刪除 // List<Integer> idList = new ArrayList<>(); // idList.add(3); // idList.add(4); // idList.add(5); // Integer result = employeeMapper.deleteBatchIds(idList); // System.out.println("result: " + result ); }

/*
==>  Preparing: DELETE FROM tbl_employee WHERE id IN ( ? , ? , ? )
==> Parameters: 35(Integer), 45(Integer), 55(Integer)
<==    Updates: 0
*/

 

條件構造器

實體包裝器,用於處理 sql 拼接,排序,實體參數查詢等!

補充說明: 使用的是數據庫字段,不是Java屬性!

	/**
	 * 條件構造器  刪除操作
	 *
	 */
	@Test
	public void testEntityWrapperDelete() {

		employeeMapper.delete(
				new EntityWrapper<Employee>()
						.eq("last_name", "Tom")
						.eq("age", 22)
		);
	}

/* ==> Preparing: DELETE FROM tbl_employee WHERE (last_name = ? AND age = ?) ==> Parameters: Tom(String), 22(Integer) <== Updates: 0 */

 

    •   修改

 

	/**
	 * 通用 更新操作
	 */
	@Test
	public void testCommonUpdate() {
		//初始化修改對象
		Employee employee = new Employee();
		employee.setId(7L);
		employee.setLastName("小澤老師");
		employee.setEmail("xz@sina.com");
		employee.setGender("0");

          // updateById 實體類為空的列 自動跳出,不修改 Integer result = employeeMapper.updateById(employee);
/* ==> Preparing: UPDATE tbl_employee SET last_name=?, email=?, gender=? WHERE id=? ==> Parameters: 小澤老師(String), xz@sina.com(String), 0(String), 7(Long) <== Updates: 0 */           // updateAllColumnById 所有列都會修改 Integer result = employeeMapper.updateAllColumnById(employee);

/*
==>  Preparing: UPDATE tbl_employee SET last_name=?,email=?,gender=?,age=?,version=? WHERE id=?
==> Parameters: 小澤老師(String), xz@sina.com(String), 0(String), null, null, 7(Long)
<==    Updates: 0
*/
}

 

	/**
	 * 條件構造器  修改操作
	 */
	@Test
	public void testEntityWrapperUpdate() {

		Employee employee = new Employee();
		employee.setLastName("蒼老師");
		employee.setEmail("cls@sina.com");
		employee.setGender("0");


		employeeMapper.update(employee,
				new EntityWrapper<Employee>()
						.eq("last_name", "Tom")
						.eq("age", 44)
		);


/*
==>  Preparing: UPDATE tbl_employee SET last_name=?, email=?, gender=? WHERE (last_name = ? AND age = ?)
==> Parameters: 蒼老師(String), cls@sina.com(String), 0(String), Tom(String), 44(Integer)
<==    Updates: 0
*/

}

 

    •    新增
	/**
	 * 通用 插入操作
	 */
	@Test
	public void testCommonInsert() {

		//初始化Employee對象
		Employee employee  = new Employee();
		employee.setLastName("MP");
		employee.setEmail("mp@atguigu.com");
		//employee.setGender(1);
		//employee.setAge(22);
		//employee.setSalary(2"0""0""0""0"."0");
		//插入到數據庫   
		// insert方法在插入時, 會根據實體類的每個屬性進行非空判斷,只有非空的屬性對應的字段才會出現到SQL語句中
		//Integer result = employeeMapper.insert(employee);  
/*
==>  Preparing: INSERT INTO tbl_employee ( id, last_name, email ) VALUES ( ?, ?, ? )
==> Parameters: 1107953008443265026(Long), MP(String), mp@atguigu.com(String)
<==    Updates: 1
*/


//insertAllColumn方法在插入時, 不管屬性是否非空, 屬性所對應的字段都會出現到SQL語句中. Integer result = employeeMapper.insertAllColumn(employee);
/*
==>  Preparing: INSERT INTO tbl_employee ( id,last_name,email,gender,age,version ) VALUES ( ?,?,?,?,?,? )
==> Parameters: 1107952717069209602(Long), MP(String), mp@atguigu.com(String), null, null, null
<==    Updates: 1

*/


System.out.println("result: " + result ); //獲取當前數據在數據庫中的主鍵值 mybatis plus自動會回填id Long key = employee.getId(); System.out.println("key:" + key ); }

 

    •   查詢
	/**
	 * 通用 查詢操作
	 */
	@Test
	public void  testCommonSelect() {
		//1. 通過id查詢
//		Employee employee = employeeMapper.selectById(7);
//		System.out.println(employee);

		//2. 通過多個列進行查詢    id  +  lastName
//		Employee  employee = new Employee();
//		//employee.setId(7);
//		employee.setLastName("小澤老師");
//		employee.setGender("0");
//		
//		Employee result = employeeMapper.selectOne(employee);
//		System.out.println("result: " +result );


		//3. 通過多個id進行查詢    <foreach>
//		List<Integer> idList = new ArrayList<>();
//		idList.add(4);
//		idList.add(5);
//		idList.add(6);
//		idList.add(7);
//		List<Employee> emps = employeeMapper.selectBatchIds(idList);
//		System.out.println(emps);

		//4. 通過Map封裝條件查詢
//		Map<String,Object> columnMap = new HashMap<>();
//		columnMap.put("last_name", "Tom");
//		columnMap.put("gender", 1);
//		
//		List<Employee> emps = employeeMapper.selectByMap(columnMap);
//		System.out.println(emps);

		//5. 分頁查詢
		List<Employee> emps = employeeMapper.selectPage(new Page(1, 2), null);
		System.out.println(emps);
	}

 

	/**
	 * 條件構造器   查詢操作
	 */
	@Test
	public void testEntityWrapperSelect() {
		//我們需要分頁查詢tbl_employee表中,年齡在18~5"0"之間且性別為男且姓名為Tom的所有用戶

//		List<Employee> emps =employeeMapper.selectPage(new Page<Employee>(1, 2),
//					new EntityWrapper<Employee>()
//					.between("age", 18, 5"0")
//					.eq("gender", 1)
//					.eq("last_name", "Tom")
//				);
//		System.out.println(emps);


/*
==>  Preparing: SELECT COUNT(1) FROM tbl_employee WHERE (age BETWEEN ? AND ? AND gender = ? AND last_name = ?)
==> Parameters: 18(Integer), 50(Integer), 1(Integer), Tom(String)
<==    Columns: COUNT(1)
<==        Row: 0
==>  Preparing: SELECT id AS id,last_name AS lastName,email,gender,age,version FROM tbl_employee WHERE (age BETWEEN ? AND ? AND gender = ? AND last_name = ?)
==> Parameters: 18(Integer), 50(Integer), 1(Integer), Tom(String)
<==      Total: 0
*/

// 查詢tbl_employee表中, 性別為女並且名字中帶有"老師" 或者 郵箱中帶有"a" // List<Employee> emps = employeeMapper.selectList( // new EntityWrapper<Employee>() // .eq("gender", "0") // .like("last_name", "老師") // //.or() // SQL: (gender = ? AND last_name LIKE ? OR email LIKE ?) // .orNew() // SQL: (gender = ? AND last_name LIKE ?) OR (email LIKE ?) // .like("email", "a") // ); // System.out.println(emps);

/*
==>  Preparing: SELECT id AS id,last_name AS lastName,email,gender,age,version FROM tbl_employee WHERE (gender = ? AND last_name LIKE ?) OR (email LIKE ?)
==> Parameters: 0(String), %老師%(String), %a%(String)
<==    Columns: id, lastName, email, gender, age, version
<==        Row: 1107952717069209602, MP, mp@atguigu.com, null, null, null
<==        Row: 1107953008443265026, MP, mp@atguigu.com, null, null, null
<==      Total: 2
*/
// 查詢性別為女的, 根據age進行排序(asc/desc), 簡單分頁 // List<Employee> emps = employeeMapper.selectList( // new EntityWrapper<Employee>() // .eq("gender", "0") // .orderBy("age") // //.orderDesc(Arrays.asList(new String [] {"age"})) // .last("desc limit 1,3") // ); // System.out.println(emps); }


/*
==>  Preparing: SELECT id AS id,last_name AS lastName,email,gender,age,version FROM tbl_employee WHERE (gender = ?) ORDER BY age desc limit 1,3
==> Parameters: 0(String)
<==      Total: 0
*/

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM