Mybatis-Plus插件的快速入门使用

今天我讲解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%n

jdbc.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


版权声明:本文为Mr_Yin02原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。