MyBatis-Plus 是一个 Mybatis 的增强工具,在 Mybatis的基础上只做增强不做修改。
在本章中详细说明了 KingbaseES 对 MyBatis-Plus的支持情况,以及使用时应该注意的问题。
Mybatis-Plus的jar包可以从官方网站下载,Mybatis-Plus所使用的JDBC包kingbase8-8.6.0.jar位于$KINGBASE_HOME/Interface/jdbc目录下。使用时将Mybatis-Plus包和JDBC包导入到项目的Libraries中并定义相关配置项即可。

定义Mybatis-Plus配置文件,根据用户选择,更改一下配置文件。以SpringMVC工程整合Mybatis-Plus3.x为例:
配置spring配置文件:
配置MapperScan:
调整SqlSessionFactory为Mybatis-Plus的SqlSessionFactory:
配置实体类:
@TableName(value = "tb_employee") /* 指定表名 */
public class Employee {
/* value与数据库主键列名一致,若实体类属性名与表主键列名一致可省略value */
@TableId(value = "id", type = IdType.AUTO) /* 指定自增策略 */
private Integer id;
/* 若没有开启驼峰命名,或者表中列名不符合驼峰规则,可通过该注解 */
/* 指定数据库表中的列名,exist标明数据表中有没有对应列 */
@TableField(value = "last_name", exist = true)
private String lastName;
private String email;
private boolean gender;
private Integer age;
private Date date;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public boolean isGender() {
return gender;
}
public void setGender(boolean gender) {
this.gender = gender;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String toString() {
return "Employee [id=" + id + ", lastName=" + lastName + ",
email=" + email + ", gender=" + gender +", age=" + age + ",
date=" + date + "]";
}
}
定义Mapper接口:
@Mapper
public interface EmplopyeeDao extends BaseMapper {
}
在Java中进行表的增删改查操作:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({ "classpath:spring/spring-dao.xml" })
public class test {
@Autowired
private DataSource dataSource;
@Test
public void testDataSource() throws SQLException {
System.out.println(dataSource.getConnection());
}
@Autowired
private EmplopyeeDao emplopyeeDao;
@Test
public void testInsert() {
Employee employee = new Employee();
employee.setLastName("tom");
employee.setEmail("dfbb@163.com");
employee.setGender(false);
employee.setAge(22);
employee.setDate(new Date(System.currentTimeMillis()));
emplopyeeDao.insert(employee);
/* mybatisplus会自动把当前插入对象在数据库中的id写回到该实体中 */
System.out.println(employee.getId());
}
@Test
public void testUpdate() {
Employee employee = new Employee();
employee.setId(1);
employee.setLastName("更新测试");
/* 根据id进行更新,没有传值的属性就不会更新 */
emplopyeeDao.updateById(employee);
/* 根据id进行更新,没传值的属性就更新为null */
emplopyeeDao.update(employee, null);
}
@Test
public void testSelectById() {
Employee employee = emplopyeeDao.selectById(2);
System.out.println(employee.toString());
}
@Test
public void testSelect() {
Map columnMap = new HashMap();
/* 写表中的列名 */
columnMap.put("last_name", "更新测试");
columnMap.put("gender", false);
List employees = emplopyeeDao.selectByMap(columnMap);
System.out.println(employees.size());
}
@Test
public void testSelectByPage() {
IPage employees = emplopyeeDao.selectPage(new Page(1, 5),
new QueryWrapper().between("age", 18, 50).eq("gender",
false).eq("last_name", "更新测试"));
System.out.println(employees);
}
@Test
public void testDeleteById() {
System.out.println(emplopyeeDao.deleteById(1));
}
@Test
public void testDelete() {
Map columnMap = new HashMap();
columnMap.put("gender", false);
columnMap.put("age", 18);
emplopyeeDao.deleteByMap(columnMap);
}
@Test
public void testSelectByPage1() {
Integer[] ints = { 1, 18, 19, 20, 21, 22, 23, 24, 25 };
IPage employees = emplopyeeDao.selectPage(new Page(1, 5),
new QueryWrapper().between("age", 18, 50).eq("gender",
false).eq("last_name", "更新测试").in(true,
"age", Arrays.asList(ints)));
System.out.println(employees.toString());
System.out.println(employees.getTotal());
System.out.println(employees.getPages());
System.out.println(employees.getRecords());
}
}