今天我讲解mybatis-plus的插件基本的使用:
第一步:导入依赖:
mybatis-plus、lombok、mysql、log4j、junit
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xmr</groupId>
<artifactId>mybatis-plus插件的使用</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<!-- mybatis-plus插件 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus</artifactId>
<version>3.1.1</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.27</version>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.10</version>
</dependency>
<!--log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>注意:千万不要到mybatis的依赖,否则会产生冲突,因为mybatis-plus的插件已经依赖于mybatis的包,所以你导入mybatis-plus插件,它会自动导入mybatis的依赖。
第二步:创建配置文件
log4j.properties
#DEBUG表示等级,最低的等级;stdout表示输出到控制台
log4j.rootLogger=DEBUG,stdout
log4j.logger.org.mybatis.example.BlogMapper=TRACE
#控制台输出的相关设置
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
#[%t]表示线程名称,由这个线程来打印 %5p表示日志级别 -%m%n表示换行
log4j.appender.stdout.layout.ConversionPattern=[%t] %5p - %msg \:%m%njdbc.properties
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/填自己的数据库?useUnicode=true&characterEncoding=utf-8
username=root
password=填自己的密码在resources文件夹下创建一个文件夹叫mapper
在刚刚创建的mapper文件夹下创建映射文件UserMapper.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.xmr.dao.UserDao">
</mapper>mybatis-plus.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="jdbc.properties"/> <!--加载配置文件-->
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="mapper/UserMapper.xml"/>
</mappers>
</configuration>注意:这些文件创建在resources的文件夹下
第三步:创建实体类,dao类,util类
实体类:user
package com.xmr.entity;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@TableName("tb_user")
public class User {
private long id;
private String user_name;
private String password;
private String name;
private Integer age;
private String email;
}
注意:如果这个类的类名没有和你数据库的表名一致,那你就得设置类名和你的数据库表名一致@TableName("填数据库表名")。还有这些变量也得和你数据库表名里的字段名一致。
dao类:
package com.xmr.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.xmr.entity.User;
public interface UserDao extends BaseMapper<User> {
}
注意:这个dao类需要继承BaseMapper接口,这个接口继承了Mapper接口,BaseMapper接口需要一个泛型,而这个泛型就是你的实体类(User)。
Util工具类:
package com.xmr.util;
import com.baomidou.mybatisplus.core.MybatisSqlSessionFactoryBuilder;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import java.io.IOException;
import java.io.InputStream;
public class MybatisUtil {
private static SqlSessionFactory factory;
private static ThreadLocal<SqlSession> local = new ThreadLocal<>();
private static SqlSession sqlSession;
static {
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
MybatisSqlSessionFactoryBuilder builder = new MybatisSqlSessionFactoryBuilder();
factory = builder.build(is);
} catch (IOException e) {
e.printStackTrace();
}
}
private static SqlSession session(boolean b) {
sqlSession = local.get();
if (sqlSession == null) {
sqlSession = factory.openSession(b);
local.set(sqlSession);
}
return sqlSession;
}
public static SqlSession getSqlSession() {
return session(false);
}
public static <T> T getMapper(Class<T> c) {
sqlSession = session(false);
T t = sqlSession.getMapper(c);
return t;
}
}
注意:在传统的mybatis框架,mybatis的工厂实现类是SqlSessionFactoryBuilder,但是现在我使用的mybatis-plus插件的形式实现对数据库的操作,所以我们就不能用SqlSessionFactoryBuilder,等用MybatisSqlSessionFactoryBuilder。
第四步:测试
package com.xmr.dao;
import com.xmr.entity.User;
import com.xmr.util.MybatisUtil;
import org.junit.Test;
import java.util.List;
import static org.junit.Assert.*;
public class UserDaoTest {
@Test
public void a1(){
UserDao userDao= MybatisUtil.getMapper(UserDao.class);
List<User> users = userDao.selectList(null);
for (User user:users){
System.out.println(user);
}
}
}运行结果:
我们能看到这里有许多的方法,而这些方法并不是我们写的,而是BaseMapper接口的

debug测试:
总结:这里还有很多方法,我没有演示,只演示了一个简单的方法。总之会用了mybatis-plus插件,你的开发效率会得到提高,但是复杂的sql语句,可能还得你自己取去映射文件写。如果你们在运行的过程中,遇到问题,可以联系我@qq:2536233098