何为Mybatis-Plus?
Mybatis-plus是为了简化开发而诞生的,在Mybatis的基础上进行了升级,通过调用一些方法从而实现对数据库的增删改查操作,也可以自己使用xml文件来写自定义的sql,也可以结合QueryWrapper来进行查询(个人理解)。
mybatis-plus官网了解一下?
Mybatis-Plus依赖引入
<!--MybatisPlus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
实现
首先要穿件xml文件来映射实体类和数据库字段的关系:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.admin.mapper.UserMapper">
<resultMap id="BaseResult" type="com.admin.model.User">
<id column="id" jdbcType="INTEGER" property="id"></id>
<result column="user_name" jdbcType="VARCHAR" property="userName"></result>
<result column="password" jdbcType="VARCHAR" property="password"></result>
<result column="age" jdbcType="INTEGER" property="age"></result>
<result column="is_delect" jdbcType="INTEGER" property="isDelect"></result>
</resultMap>
</mapper>
然后在自己的mapper层接口继承BaseMapper类,该父类需要传入一个泛型对象,这个泛型对象就是数据库表对应的实体类
这里有个坑:
继承这个父类需要引入import org.apache.ibatis.annotations.Mappe
,而不是import tk.mybatis.mapper.common.BaseMapper
。
org.apache.ibatis.annotations.Mapper
包比import tk.mybatis.mapper.common.BaseMapper
的方法更多,而且支持使用QueryWrapper进行查询。
使用实例
@Test
public void selectAll(){
List<User> user = userMapper.selectList(null);
user.forEach(System.out::println);
}
结果
结合QueryWrapper进行查询
@Test
public void withWrapper(){
QueryWrapper<User> wrapper= new QueryWrapper<>();
//age不为空
wrapper.isNotNull("age");
//age大于10
wrapper.ge("age",10);
//name_name为dog
wrapper.eq("user_name","dog");
//age在10到30之间
wrapper.between("age",10,30);
//根据age降序排列
wrapper.orderByDesc("age");
List<User> userList = userMapper.selectList(wrapper);
logger.info("The QueryWrapper is:{}",wrapper.toString());
userList.forEach(System.out::println);
}
结果:
坑二
数据库表设计:
数据库里的字段,如果数据库的字段不是一个英文单词可以搞定的,就要使用下划线作为两个单词之间的区分,如:user_name和is_delect,不能写成username/userName,isDelect/isdelect,这样的字段,MyBatis-Puls不能识别,会报“user_name”无法识别
的错误(此处假设数据库使用username进行举例)
关于QueryWrapper
这个对象是用于封装查询条件的,该对象中有很多的方法,例如isNotNull,eq,between等等,感兴趣的可以去百度学习一波。
MyBatis-Puls可以用的方法有很多,感兴趣的也还是可以去学习一波。
最近面试面得有点抑郁,哈哈哈。还是加油叭。
一分耕耘一分收获。