xmtrock
发布于 2021-05-04 / 130 阅读
0

MybatisPlus知识点与例子

增:

主键自增 1、实体类字段上 @TableId(type = IdType.AUTO) 2、数据库id字段设置为自增!
表明不知 在实体类上面@TableName(“employee”)

Employee employee = new Employee();
employee.setLastName("MP");
employee.setEmail("mp@atguigu.com");
employee.setGender(1);

//insert方法在插入时,会根据实体类的每个属性进行非空判断,只有非空的属性对应的字段才会出现到SQL语句中
Integer result = employeeMapper.insert(employee);
System.out.println("result: " + result );

//insertAllColumn方法在插入时,不管属性是否非空, 属性所对应的字段都会出现到SQL语句中.
Integer result1 = employeeMapper.insertAllColumn(employee);
System.out.println("result: " + result1 );
//获取当前数据在数据库中的主键值
Integer key = employee.getId();
System.out.println("key:" + key );

删:

 //1 .根据id进行删除
Integer result = employeeMapper.deleteById(13);

//2. 根据条件进行删除
Map<String,Object> columnMap = new HashMap<>();
columnMap.put("last_name", "MP");
columnMap.put("email", "mp@atguigu.com");
Integer result = employeeMapper.deleteByMap(columnMap);

//3. 批量删除
List<Integer> idList = new ArrayList<>();
idList.add(3);
idList.add(4);
idList.add(5);
Integer result = employeeMapper.deleteBatchIds(idList);

改:

Employee employee = new Employee();
employee.setId(7);
employee.setLastName("王五");
employee.setEmail("xz@sina.com");
employee.setGender(0);

//updateById方法在修改时,会根据实体类的每个属性进行非空判断,只有非空的属性对应的字段才会出现到SQL语句中
Integer result = employeeMapper.updateById(employee);
System.out.println("result: " + result );

//updateAllColumnById方法在修改时,不管属性是否非空, 属性所对应的字段都会出现到SQL语句中.
Integer result1 = employeeMapper.updateAllColumnById(employee);
System.out.println("result: " + result1 );

查:

 //1. 通过id查询
Employee employee = employeeMapper.selectById(7);

//2. 通过多个列进行查询。selectOne查询结果只能是一条,否则报错
Employee employee1 = new Employee();
employee.setLastName("王五");
employee.setGender(0);
Employee result = employeeMapper.selectOne(employee1);

//3. 通过多个id进行查询
List<Integer> idList = new ArrayList<>();
idList.add(4);
idList.add(5);
idList.add(6);
idList.add(7);
List<Employee> emps = employeeMapper.selectBatchIds(idList);

//4. 通过Map封装条件查询。map中的key是数据库中字段名
Map<String,Object> columnMap = new HashMap<>();
columnMap.put("last_name", "Tom");
columnMap.put("gender", 1);
List<Employee> emps = employeeMapper.selectByMap(columnMap);

//5. 分页查询
List<Employee> emps2 = employeeMapper.selectPage(new Page<>(3, 2), null);

条件构造器EntityWrapper

查询

 //我们需要分页查询tbl_employee表中,年龄在18~50之间且性别为男且姓名为Tom的所有用户
List<Employee> emps1 =employeeMapper.selectPage(new Page<Employee>(1, 2),
new EntityWrapper<Employee>() .between("age", 18, 50) .eq("gender", 1) .eq("last_name", "Tom") );
System.out.println(emps1);

//我们需要分页查询tbl_employee表中,年龄在18~50之间且性别为男且姓名为Tom的所有用户
List<Employee> emps2 = employeeMapper.selectPage(new Page<Employee>(1,2), 

Condition.create() .between("age", 18, 50) .eq("gender", "1") .eq("last_name", "Tom") );
System.out.println(emps2);

// 查询tbl_employee表中, 性别为女并且名字中带有"老师" 或者 邮箱中带有"a"
List<Employee> emps3 = 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(emps3);

//查询性别为女的, 根据age进行排序(asc/desc), 简单分页
List<Employee> emps4 = employeeMapper.selectList(
new EntityWrapper<Employee>() .eq("gender", 0) .orderBy("age") //默认是升序
//.orderDesc(Arrays.asList(new String [] {"age"}))
.last("desc limit 1,3") //在sql最后拼接
);
System.out.println(emps4);

修改

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) );

删除

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