第二章: Mybatis-Plus 快速入门

news2024/11/26 1:42:49

目录

1. 准备工作

数据库准备:

创建Maven 父模块

2. Mybatis 整合 Mybatis-Plus

创建子模块:

准备 log4j.properties 日志文件

3. Mybatis 原生写法实现查询User

 编写mybatis-config.xml文件:

编写User实体对象:(这里使用lombok进行了进化bean操作)

编写UserMapper接口

编写UserMapper.xml文件:

编写TestMybatis测试用例:

 4. Mybatis + Mybatis-Plus整合查询User 

将UserMapper继承BaseMapper,将拥有了BaseMapper中的所有方法:

使用MP中的MybatisSqlSessionFactoryBuilder进行构建:

运行报错:

解决: 在User对象中添加 @TableName, 指定该类映射的数据库表名.  (默认是数据库.实体类类名小写) 

测试结果:

简要说明:

5. Spring + Mybatis + Mybatis-Plus整合

创建子Module

编写jdbc.properties

编写log4j.properties

编写applicationContext.xml

编写User对象以及UserMapper接口:

编写测试用例:

测试结果:

6.SpringBoot + Mybatis + Mybatis-Plus整合查询User

创建SpringBoot项目导入相关依赖

log4j.properties:

编写application.properties

编写pojo 和 mapper

编写启动类

编写测试用例

测试结果


对于Mybatis整合MybatisPlus常常有三种用法,分别是 Mybatis + Mybatis-Plus 、Spring + Mybatis + Mybatis-Plus、SpringBoot + Mybatis + Mybatis-Plus

1. 准备工作

数据库准备:

-- 创建数据库
create database mybatis_plus_practice;
-- 使用数据库
USE mybatis_plus_practice;

-- 创建测试表
CREATE TABLE `tb_user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`user_name` varchar(20) NOT NULL COMMENT '用户名',
`password` varchar(20) NOT NULL COMMENT '密码',
`name` varchar(30) DEFAULT NULL COMMENT '姓名',
`age` int(11) DEFAULT NULL COMMENT '年龄',
`email` varchar(50) DEFAULT NULL COMMENT '邮箱',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
-- 插入测试数据
INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) 
VALUES('1', 'zhangsan', '123456', '张三', '18', 'test1@163.cn');
INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES('2', 'lisi', '123456', '李四', '20', 'test2@163.cn');
INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES('3', 'wangwu', '123456', '王五', '28', 'test3@163.cn');
INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES('4', 'zhaoliu', '123456', '赵六', '21', 'test4@163.cn');
INSERT INTO `tb_user` (`id`, `user_name`, `password`, `name`, `age`, `email`) VALUES('5', 'sunqi', '123456', '孙七', '24', 'test5@163.cn');

创建Maven 父模块

<?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>indi.darylz</groupId>
    <artifactId>mybatis-plus-simple</artifactId>
    <version>1.0-SNAPSHOT</version>
    <modules>
        <module>mybatis-plus-mybatis</module>
    </modules>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
    <packaging>pom</packaging>

    <!-- 导入相关依赖-->
    <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.16</version>
        </dependency>
        <!-- 连接池 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.0.11</version>
        </dependency>

        <dependency>
            <!-- 简化bean代码的工具包 -->
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
            <version>1.18.4</version>
        </dependency>
        <!-- 单元测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <!-- 日志工具包-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.6.4</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

2. Mybatis 整合 Mybatis-Plus

创建子模块:

<?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>
    <parent>
        <groupId>indi.darylz</groupId>
        <artifactId>mybatis-plus-simple</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <packaging>jar</packaging>
    <artifactId>mybatis-plus-mybatis</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

</project>

准备 log4j.properties 日志文件

log4j.rootLogger=DEBUG,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%t] [%c]-[%p] %m%n

3. Mybatis 原生写法实现查询User

 编写mybatis-config.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>
    <settings>
        <!-- 开启驼峰,开启后,只要数据库字段和对象属性名字母相同,
        无论中间加多少下划线都可以识别 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    <environments default="development">
        <!-- 配置数据源 -->
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!-- 由于使用的mysql8的版本, 驱动类是 com.mysql.cj.jdbc.Driver
                mysql5驱动版本是 com.mysql.jdbc.Driver-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <!-- 由于使用的mysql8的版本,  url中一定要加入时区! 否则报时区错误异常
                #北京东八区 serverTimezone=GMT%2B8
                #上海时区 serverTimezone=Asia/Shanghai-->
                <property name="url" value="jdbc:mysql://127.0.0.1:3306/mybatis_plus_practice?serverTimezone=GMT%2B8&amp;
                characterEncoding=utf8&amp;useUnicode=true&amp;useSSL=true"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!-- 通过resource属性引入classpath路径的相对资源-->
        <mapper resource="UserMapper.xml"/>
    </mappers>
</configuration>

编写User实体对象:(这里使用lombok进行了进化bean操作)

package indi.darylz.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author daryl z
 * @description description_write_here
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private Long id;
    private String userName;
    private String password;
    private String name;
    private Integer age;
    private String email;
}

编写UserMapper接口

package indi.darylz.mapper;

import indi.darylz.pojo.User;

import java.util.List;

/**
 * @author: daryl z
 * @description: description_write_here
 */
public interface UserMapper {
    List<User> findAll();
}

编写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="indi.darylz.mapper.UserMapper">
    <select id="findAll" resultType="indi.darylz.pojo.User">
        SELECT * FROM tb_user;
    </select>
</mapper>

编写TestMybatis测试用例:

package indi.darylz;

import indi.darylz.mapper.UserMapper;
import indi.darylz.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * @author: daryl z
 * @description: description_write_here
 */
public class TestMybatis {
    private UserMapper userMapper;

    @Before
    public void getUserMapperInstance() throws IOException {
        String resource = "mybatis-config.xml";
        // 读取当前类路径下的配置文件获取一个 输出流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        // 然后 再通过 Mybatis 的 会话工厂建造器,获取一个会话工厂
        SqlSessionFactory sessionFactory =
                new SqlSessionFactoryBuilder().build(inputStream);
        // 打开会话获取一个 会话实例
        SqlSession sqlSession = sessionFactory.openSession();
        // 通过 会话实例 get 一个 UserMapper 的 代理对象
        userMapper = sqlSession.getMapper(UserMapper.class);

    }

    @Test
    public void testFindAll() {
        List<User> userList = userMapper.findAll();
        for (User user : userList) {
            System.out.println(user);
        }
    }
}

测试结果:

 4. Mybatis + Mybatis-Plus整合查询User 

将UserMapper继承BaseMapper,将拥有了BaseMapper中的所有方法:

package indi.darylz.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import indi.darylz.pojo.User;

import java.util.List;

/**
 * @author: daryl z
 * @description: description_write_here
 */
public interface UserMapper extends BaseMapper<User> {
    List<User> findAll();
}

使用MP中的MybatisSqlSessionFactoryBuilder进行构建:

package indi.darylz;

import com.baomidou.mybatisplus.core.MybatisSqlSessionFactoryBuilder;
import indi.darylz.mapper.UserMapper;
import indi.darylz.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

/**
 * @author: daryl z
 * @description: description_write_here
 */
public class TestMybatisMybatisPlus{
    private UserMapper userMapper;

    @Before
    public void getUserMapperInstance() throws IOException {
        String resource = "mybatis-config.xml";
        // 读取当前类路径下的配置文件获取一个 输出流
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //这里使用的是Mybatis-Plus 中的MybatisSqlSessionFactoryBuilder 进行构建
        SqlSessionFactory sessionFactory =
                new MybatisSqlSessionFactoryBuilder().build(inputStream);
        // 打开会话获取一个 会话实例
        SqlSession sqlSession = sessionFactory.openSession();
        // 通过 会话实例 get 一个 UserMapper 的 代理对象
        userMapper = sqlSession.getMapper(UserMapper.class);

    }

    @Test
    public void testSelectList() {
        List<User> userList = userMapper.selectList(null);
        for (User user : userList) {
            System.out.println(user);
        }
    }
}

运行报错:

解决: 在User对象中添加 @TableName, 指定该类映射的数据库表名.  (默认是数据库.实体类类名小写) 

package indi.darylz.pojo;

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author daryl z
 * @description description_write_here
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("tb_user")
public class User {
    private Long id;
    private String userName;
    private String password;
    private String name;
    private Integer age;
    private String email;
}

测试结果:

简要说明:

由于使用 MybatisSqlSessionFactoryBuilder(这个类是 Mybatis官方的 SqlSessionFactoryBuilder 类的子类 )进行了构建,继承的BaseMapper中的方法就载入到了SqlSession中, 所以就可以直接使用相关的方法;

5. Spring + Mybatis + Mybatis-Plus整合

引入了Spring框架,数据源、构建等工作就交给了Spring管理。

创建子Module

<?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">
    <parent>
        <groupId>indi.darylz</groupId>
        <artifactId>mybatis-plus-simple</artifactId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>mybatis-plus-spring</artifactId>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <spring.version>5.1.8.RELEASE</spring.version>
    </properties>

    <dependencies>
        <!-- 导入Spring相关依赖-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>${spring.version}</version>
        </dependency>
    </dependencies>
</project>

编写jdbc.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatis_plus_practice?serverTimezone=GMT%2B8&characterEncoding=utf8&useUnicode=true&useSSL=true
jdbc.username=root
jdbc.password=root

编写log4j.properties

log4j.rootLogger=DEBUG,A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%t] [%c]-[%p] %m%n

编写applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd">

    <!-- 启动Spring项目时扫描到 数据库连接的配置文件 -->
    <context:property-placeholder location="classpath:*.properties"/>

    <!-- 配置数据源 -->
    <bean class="com.alibaba.druid.pool.DruidDataSource" id="dataSource" destroy-method="close">
        <property name="url" value="${jdbc.url}"/>
        <property name="username" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
        <property name="driverClassName" value="${jdbc.driver}"/>
        <!-- maxActive: 最主要参数,配置连接池同时能维持的最大连接数,如果客户端理论上需要100个连接,则这个值设为100。 -->
        <property name="maxActive" value="10"/>
        <!--minIdle:连接池中的最小空闲连接数,Druid会定时扫描连接池的连接,
        如果空闲的连接数大于该值,则关闭多余的连接,
        反之则创建更多的连接以满足最小连接数要求。-->
        <property name="minIdle" value="5"/>
    </bean>

    <!-- 这里使用 Mybatis-Plus提供的 sqlSessionFactory,完成 Spring与Mybatis-Plus的整合 -->
    <bean class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean"
          id="mybatisSqlSessionFactoryBean">
        <!-- 将druid连接池注入到 MybatisSqlSessionFactoryBean 的 dataSource属性 中 -->
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- 扫描mapper 接口, 使用的依然是 Mybatis原生的扫描器 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 将包名注入到 MapperScannerConfigurer 的  basePackage 中 -->
        <property name="basePackage" value="indi.darylz.mapper"/>
    </bean>
</beans>

编写User对象以及UserMapper接口:

package indi.darylz.pojo;

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author daryl z
 * @description description_write_here
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("tb_user")
public class User {
    private Long id;
    private String userName;
    private String password;
    private String name;
    private Integer age;
    private String email;
}
package indi.darylz.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import indi.darylz.pojo.User;

/**
 * @author: daryl z
 * @description: description_write_here
 */
public interface UserMapper extends BaseMapper<User> {
}

编写测试用例:

package indi.darylz.test;

import indi.darylz.mapper.UserMapper;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

/**
 * @author: daryl z
 * @description: description_write_here
 */
// 注入 Spring整合Junit的 运行器
@RunWith(SpringJUnit4ClassRunner.class)
// 指定上下文配置, 读取哪个文件的配置?
@ContextConfiguration(locations = "classpath:application-context.xml")
public class TestSpringMybatisPlus {
    /* 注入UserMapper的代理对象 */
    @Autowired
    private UserMapper userMapper;
    
    @Test
    public void testSelectList(){
        userMapper.selectList(null).forEach(System.out::println);
    }
    
}

测试结果:

6.SpringBoot + Mybatis + Mybatis-Plus整合查询User

使用SpringBoot将进一步的简化 Mybatis-Plus的整个, 需要注意的是,由于使用SpringBoot 需要继承 parent, 所以需要重新创建工程, 而不是去创建一个 子Module 

创建SpringBoot项目导入相关依赖

<?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">
    <!-- SpringBoot 父模块 GAV -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.5.RELEASE</version>
    </parent>

    <modelVersion>4.0.0</modelVersion>
    <groupId>indi.darylz</groupId>
    <artifactId>mybatis-plus-springboot</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <!-- 导入 SpringBoot相关依赖-->
        <!-- SpringBoot启动器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-starter-logging</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- 测试启动器 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--简化代码的工具包-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!--mybatis-plus启动器的 springboot支持-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.0</version>
        </dependency>
        <!--mysql驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>
        <!-- 日志工具包 -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </dependency>
    </dependencies>
    <!-- 打包插件 -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

log4j.properties:

log4j.rootLogger=debug,A1

log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=[%t] [%c]-[%p] %m%n
# 关闭 springboot2 的自动装配日志报告 CONDITIONS EVALUATION REPORT
# 的 debug 级别, 更改为 error级别, 不然有的日志看不见,
# 比如有时 Mybatis-Plus生成SQL语句的日志
log4j.logger.org.springframework.boot.autoconfigure=ERROR

编写application.properties

spring.application.name=darylz-mybatis-plus-springboot

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis_plus_practice?serverTimezone=GMT%2B8&characterEncoding=utf8&useUnicode=true&useSSL=true
spring.datasource.username=root
spring.datasource.password=root

编写pojo 和 mapper

package indi.darylz.pojo;

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @author daryl z
 * @description description_write_here
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("tb_user")
public class User {
    private Long id;
    private String userName;
    private String password;
    private String name;
    private Integer age;
    private String email;
}
package indi.darylz.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import indi.darylz.pojo.User;


/**
 * @author: daryl z
 * @description: description_write_here
 */
public interface UserMapper extends BaseMapper<User> {
}

编写启动类

package indi.darylz;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * @author: daryl z
 * @description: description_write_here
 */
@MapperScan("indi.darylz.mapper") // 设置 mapper 接口的扫描基包
@SpringBootApplication
public class SpringBootMybatisPlusApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootMybatisPlusApplication.class, args);
    }
}

编写测试用例

package indi.darylz;

import indi.darylz.mapper.UserMapper;
import indi.darylz.pojo.User;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.List;

/**
 * @author: daryl z
 * @description: description_write_here
 */
@RunWith(SpringRunner.class)
@SpringBootTest
public class TestMybatisPlusSpringBoot {
    @Autowired
    private UserMapper userMapper;

    @Test
    public void testSelectList() {
        List<User> users = userMapper.selectList(null);
        for (User user : users) {
            System.out.println(user);
        }
    }
}

测试结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/525485.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Hyper-V搭建免费桌面云

Hyper-V 是 Microsoft 的硬件虚拟化产品。 它用于创建并运行计算机的软件版本&#xff0c;称为“虚拟机”。 每个虚拟机都像一台完整的计算机一样运行操作系统和程序。 如果需要计算资源&#xff0c;虚拟机可提供更大的灵活性、帮助节省时间和金钱&#xff0c;并且与在物理硬件…

【AI面试】RoI Pooling 和 RoI Align 辨析

RoI Pooling和RoI Align是两种常用的目标检测中的RoI特征提取方法。它们的主要区别在于&#xff1a;如何将不同大小的RoI对齐到固定大小的特征图上&#xff0c;并在这个过程中保留更多的空间信息。 一、RoI Pooling RoI Pooling最早是在Fast R-CNN中提出的&#xff0c;它的基…

MySQL MHA

概述 什么是 MHA MHA&#xff08;Master High Availability&#xff09;是一套优秀的MySQL高可用环境下故障切换和主从复制的软件。 MHA 的出现就是解决MySQL 单点的问题。 MySQL故障切换过程中&#xff0c;MHA能做到0-30秒内自动完成故障切换操作。 MHA能在故障切换的过程中…

JAVA语言-比较器Comparator(java中Comparable和Comparator的区别)

文章目录 一、什么是Comparator二、Java compare方法和compareTo方法三、java中Comparable和Comparator的区别 Comparator的例子三、demo&#xff1a;java8使用Lambda表达式比较器Comparator给List对象排序&#xff0c;按时间、数字、字典排序 一、什么是Comparator Comparato…

Unittest单元测试框架之unittest_执行用例的详细信息

unittest_执行用例的详细信息 用unittest.main()执行测试集 这里的verbosity是一个选项,表示测试结果的信息复杂度&#xff0c;有三个值&#xff1a;0 (静默模式): 你只能获得总的测试用例数和总的结果 比如 总共100个 失败20 成功801 (默认模式): 非常类似静默模式 只是在每…

MySQL数据库从入门到精通学习第3天(查看,选择,修改,删除数据库)

查看&#xff0c;选择&#xff0c;修改&#xff0c;删除数据库 查看数据库选择数据库修改数据库删除数据库 查看数据库 创建完数据库&#xff0c;可以通过SHOW命令来查看所有的数据库信息&#xff0c;语法&#xff1a; SHOW DATABASES [LIKE %模式% WHERE 条件]; >>>…

MySQL进阶-索引

本文介绍MySQL索引的结构、语法、使用规则等 文章目录 索引介绍索引结构二叉树B-TreeBTreeHash 索引分类思考题 语法SQL性能分析SQL的执行频率慢查询日志PROFILE详情EXPLAIN执行计划 索引使用规则最左前缀法则索引失效情况索引列运算字符串不加引号模糊查询or连接的条件数据分布…

(免费分享)基于微信小程序的旅游系统

目 录 1绪论 1 1.1概述 1 1.2课题意义 2 1.3主要内容 2 2 相关技术简介 3 2.1 HBuilder X技术介绍 4 2.2 JAVA简介 5 2.3 MYSQL数据库 6 2.4 SSM框架 7 3 系统分析 8 3.1 系统需求分析 9 3.1.1系统功能需求 10 3.1.2系统技术需求 11 3.1.3系统安全需求 12 3.2 可行性分析 13 3…

postgresql 词法/语法(scanner/parser)中flex/bison介绍

专栏内容&#xff1a;postgresql内核源码分析个人主页&#xff1a;我的主页座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物&#xff0e; 目录 前言 词法分析与语法分析的关系 工具介绍 flex的介绍 bison的介绍 flex的…

【云原生进阶之PaaS中间件】第一章Redis-2.2Redis IO模型

1 IO模型 linux系统也是一种应用&#xff0c;它是基于计算机硬件的一种操作系统软件。当我们接收一次网络传输&#xff0c;计算机硬件的网卡会从网络中将读到的字节流写到linux的buffer缓冲区内存中&#xff0c;然后用户空间会调用linux对外暴露的接口&#xff0c;将linux中的b…

将虚拟机dmesg日志内容通过串口输出到windows下文件中

将虚拟机dmesg日志内容通过串口输出到windows下文件中 文章目录 将虚拟机dmesg日志内容通过串口输出到windows下文件中a. 设置vmware添加serial port, 使用文件作为串口b. 启动ubuntu&#xff0c;修改/etc/default/grubc. ubuntu使用root用户登录d. 修改printk优先级&#xff0…

数据科学中使用的17 种相似性和相异性度量之欧氏距离

目录 1简介 2距离函数 2.1 L2范数&#xff08;欧氏距离&#xff09; 1简介 在数据科学中&#xff0c;相似性度量是一种衡量数据样本如何相互关联或相互接近的方法。另一方面&#xff0c;相异性度量是告诉数据对象有多少是不同的。此外&#xff0c;当相似的数据样本被分组到一…

异常检测专栏(一)异常检测概述

前言 异常检测一直是机器学习中一个活跃的研究领域&#xff0c;由于风险管理、合规、安全、将抗和医疗风险以及人工智能安全等广泛领域的需求和应用不断增加&#xff0c;异常检测发挥和越来越重要的总用。近年来&#xff0c;随着深度学习和计算机视觉技术的不断发展&#xff0c…

零死角玩转stm32中级篇4-ADC和DAC

本篇博文目录: 一.ADC的基础概念1.什么是ADC2.在单片机中我们一般使用ADC技术来做什么?3.怎么查看单片机的某一个引脚是否具有ADC功能4.ADC采集和引脚数据的读取有什么区别5.单片机内部采用的是数字信号&#xff0c;为什么还要采用ADC进行转换6.ADC的分类7.ADC的工作原理8.ADC…

多目标应用:MOGWO求解环境经济负荷分配问题(IEEE-30bus)提供MATLAB代码

一、多目标灰狼优化算法 MOGWO MOGWO原理参考文献&#xff1a;S. Mirjalili, S. Saremi, S. M. Mirjalili, L. Coelho, Multi-objective grey wolf optimizer: A novel algorithm for multi-criterion optimization, Expert Systems with Applications, in press, DOI: http:/…

基础篇007. 串行通信

目录 1. 串行通信 1.1 串行通信概述 1.2 串行通信协议 2. 实验任务 3. 硬件原理 4. 利用STM32CubeMX创建MDK工程 5. 串行通信实验 5.1 UART串口printf&#xff0c;scanf函数串口重定向 5.2 UART串口printf输出实验 5.3串口控制LED实验 6.调试与验证 7.总结 串口调…

Redis主从复制是怎么实现的

如果数据都是存储在一台服务器上&#xff0c;如果出事就完犊子了&#xff0c;比如&#xff1a; 如果服务器发生了宕机&#xff0c;由于数据恢复是需要点时间&#xff0c;那么这个期间是无法服务新的请求的&#xff1b;如果这台服务器的硬盘出现了故障&#xff0c;可能数据就都…

Java注解方式实现aop,切点切面实战

注解方式实现aop我们主要分为如下几个步骤&#xff08;有更好的方法的话&#xff0c;欢迎交流&#xff09;&#xff1a; 1.在切面类&#xff08;为切点服务的类&#xff09;前用Aspect注释修饰&#xff0c;声明为一个切面类。 2.用Pointcut注释声明一个切点&#xff0c;目的是…

STM32 10个工程篇:1.IAP远程升级(三)

本想着周六去更新IAP远程升级&#xff08;三&#xff09;&#xff0c;但是周三单位突然通知团建周六去爬水长城&#xff0c;晚上回来已经精疲力竭&#xff0c;打开电脑不由地点开网易云音乐听着听着感觉很乏&#xff0c;去床上躺了会可一觉醒来已经夜里三点&#xff0c;于是调整…

【人工智能】— 贝叶斯网络、概率图模型、全局语义、因果链、朴素贝叶斯模型、枚举推理、变量消元

【人工智能】— 贝叶斯网络 频率学派 vs. 贝叶斯学派贝叶斯学派Probability&#xff08;概率&#xff09;:独立性/条件独立性&#xff1a;Probability Theory&#xff08;概率论&#xff09;:Graphical models &#xff08;概率图模型&#xff09;什么是图模型&#xff08;Grap…