SSM整合配置过程与MyBatis-Plus敏捷开发插件用法

29 篇文章 3 订阅

Spring/Spring MVC/MyBatis(SSM)整合配置过程

MyBatis-Plus敏捷开发插件的用法

主要知识点

SSM整合配置

MyBatis-Plus配置与应用

SSM整合配置

通过Spring IoC容器管理第三方框架对象,让多框架形成整体

Spring/Spring MVC/MyBatis(SSM)是业内最主流的框架搭配

SSM整合三阶段

  • Spring与Spring MVC环境配置
  • Spring与MyBatis的整合配置
  • 整合其他组件:声明式事务/日志/任务调度

一. Spring与Spring MVC环境配置

依赖spring-webmvc

配置DispatcherServlet

启用Spring MVC注解模式

配置请求与响应字符集

配置FreeMarker模版引擎

配置Json序列化组件

1.依赖spring-webmvc

pom.xml

<?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>synu.edu.cn</groupId>
    <artifactId>book-review</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.16.RELEASE</version>
        </dependency>

        <!--Freemarker-->
        <dependency>
            <groupId>org.freemarker</groupId>
            <artifactId>freemarker</artifactId>
            <version>2.3.28</version>
        </dependency>
        <!--springmvc整合Freemarker组件-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>5.2.16.RELEASE</version>
        </dependency>

        <!--Jackson序列化包-->
        <dependency><!--核心包-->
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.8</version>
        </dependency>
        <dependency><!--注解包-->
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.8</version>
        </dependency>
        <dependency><!--数据绑定包-->
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.8</version>
        </dependency>
    </dependencies>
</project>

2.配置DispatcherServlet

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <!--DispatchServlet-->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <!--
           DispatcherServlet是Spring MVC最核心的对象
           DispatcherServlet用于拦截Http请求,
           并根据请求的URL调用与之对应的controller方法,来完成Http请求的处理
       -->
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--applicationContext.xml-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:applicationContext.xml</param-value>
        </init-param>
        <!--
            在web应用启动时自动创建spring Ioc容器并且初始化DispatcherServlet
            如果忘记写也可以运行,但是在第一次访问的时候创建,为了提高效率建议在web程序启动但时候创建
        -->
        <load-on-startup>0</load-on-startup>
    </servlet>
    <!--映射-->
    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <!--"/"代表拦截所有请求-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

3.启用Spring MVC注解模式

applicationContext.xml

xmlns引入了tx声明式事务,在后面的配置会详细写

<?xml version="1.0" encoding="UTF-8"?>
<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"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd">
    <!--
        context:component-scan 标签作用
        在Spring IOC初始化过程中,自动创建并且管理springmvc及子包中
        拥有以下注解对象
        @Repository 通常使用这个的类都是与数据发生直接交互的类
        @Service    业务逻辑类,通常放在xxxService
        @Controller 控制器类 Spring控制器
        @Component  不好区分类型使用这个
    -->
    <context:component-scan base-package="bookReview"/>

    <!--启用Spring MVC注解开发模式-->
    <mvc:annotation-driven>
        <mvc:message-converters>    <!--消息转换器,解决html中对中文乱码问题-->
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <!--response.setContentType=("text/html;charset=utf-8")-->
                        <value>text/html;charset=utf-8</value>
                        <!--                        <value>application/json;charset=utf-8</value>-->
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
    <!--将图片/js/css等静态资源排除在外,可提高执行效率-->
    <mvc:default-servlet-handler/>
</beans>

4.配置请求与响应字符集

请求字符集配置,只对post生效

web.xml

    <!--    过滤器-CharacterEncodingFilter对post所有请求转为UTF-8-->
    <filter>
        <filter-name>characterFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

tomcat8之后默认tomcat对get请求就是UTF-8编码;get请求需要配置tomcat的server.xml

响应字符集配置,第3步代码中已经写了

applicationContext.xml

annotation-driven中额外增加message-converters

    <context:component-scan base-package="restful"/>

    <!--启用Spring MVC注解开发模式-->
    <mvc:annotation-driven>
        <mvc:message-converters>    <!--消息转换器,解决html中对中文乱码问题-->
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/html;charset=utf-8</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
    <!--将图片/js/css等静态资源排除在外,可提高执行效率-->
    <mvc:default-servlet-handler/>

5.配置FreeMarker模版引擎

创建/WEB-INF/ftl目录

applicationContext.xml

    <!-- 启动Freemarker模板引擎 -->
    <bean id="ViewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
        <!--产生结果以后向客户端输出内容的时候,以哪种字符集来显示响应文本-->
        <property name="contentType" value="text/html;charset=utf-8"/>
        <!--指定Freemarker模版文件扩展名-->
        <property name="suffix" value=".ftl"/>
    </bean>
    <!-- 配置Freemarker参数 -->
    <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
        <!--设置模板保存的目录-->
        <property name="templateLoaderPath" value="/WEB-INF/ftl"/>
        <!--其他模版引擎设置-->
        <property name="freemarkerSettings">
            <props>
                <!--设置Freemarker脚本与数据渲染时使用的字符集-->
                <prop key="defaultEncoding">UTF-8</prop>
            </props>
        </property>
    </bean>

6.配置Json序列化组件

applicationContext.xml

list中新增加一项value即可<value>application/json;charset=utf-8</value>

    <context:component-scan base-package="restful"/>

    <!--启用Spring MVC注解开发模式-->
    <mvc:annotation-driven>
        <mvc:message-converters>    <!--消息转换器,解决html中对中文乱码问题-->
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes">
                    <list>
                        <value>text/html;charset=utf-8</value>
                        <value>application/json;charset=utf-8</value>
                    </list>
                </property>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>
    <!--将图片/js/css等静态资源排除在外,可提高执行效率-->
    <mvc:default-servlet-handler/>

测试

ftl目录下创建test.ftl文件,html内容写一个测试行

创建bookReview.controller.TestController.java

test1方法测试ftl的配置,test2方法测试json序列化

启动项目访问test/t1和test/t2成功即可

package bookReview.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;

import java.util.HashMap;
import java.util.Map;

@Controller
public class TestController {
    @GetMapping("/test/t1")
    public ModelAndView test1(){
        //指向ftl目录下对test文件
        return new ModelAndView("/test");
    }

    @GetMapping("/test/t2")
    @ResponseBody
    public Map test2(){
        Map result = new HashMap();
        result.put("test","测试文本");
        return result;
    }
}

二. Spring与MyBatis的整合配置

依赖mybatis-spring及驱动

配置数据源与连接池

配置SqlSessionFactory

配置Mapper扫描器

创建mybatis-config.xml

先创建数据库和测试用表

数据库book_review

表test,内容id(主键自动递增)和context字段

1.依赖mybatis-spring及驱动

pom.xml

        <!--Mybatis整合组件-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.2.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.4</version>
        </dependency>
        <dependency>    <!--整合包-->
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.6</version>
        </dependency>
        <dependency>    <!--mysql驱动要和本地安装的一致-->
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.25</version>
        </dependency>
        <dependency>    <!--连接池alibaba的druid-->
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.8</version>
        </dependency>

2.配置数据源与连接池

applicationContext.xml

    <!--配置数据源与连接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/book_review?useSSL=false&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=Asia/Shanghai&amp;allowPublicKeyRetrieval=true"/>
        <property name="username" value="root"/>
        <property name="password" value="root1024"/>
        <property name="initialSize" value="5"/>
        <property name="maxActive" value="20"/>
    </bean>

3.配置SqlSessionFactory

applicationContext.xml

通过IoC容器在初始化过程中自动实现SqlSessionFactory对象

    <!--SqlSessionFactoryBean用于根据配置信息创建SqlSessionFactory,不再需要我们自己编码创建-->
    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath:mappers/*.xml"/>
        <!--MyBatis配置文件地址-->

    </bean>

4.配置Mapper扫描器

用于扫描指定包下所有mapper接口

applicationContext.xml

    <!--配置Mapper扫描器-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="bookReview.mapper"/>
    </bean>

增加bookReview.mapper软件包

5.创建mybatis-config.xml

增加第3步注释空出的地方;这个配置可以不写,但是在MyBatis-Plus高级用法会用到,一起写上了

applicationContext.xml

    <!--SqlSessionFactoryBean用于根据配置信息创建SqlSessionFactory,不再需要我们自己编码创建-->
    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath:mappers/*.xml"/>
        <!--MyBatis配置文件地址-->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
    </bean>

创建src/main/resources/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="mapUnderscoreToCame1Case" value="true"/>
    </settings>
</configuration>

6.整合其他组件

在实际的项目开发中还需要注入如:声明式事务,日志模块,单元测试框架等等

  • 配置logback日志输出
  • 声明式事务配置
  • 整合JUnit单元测试
加入JUnit单元测试框架

pom.xml

        <!--单元测试框架-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.2.6.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
				<!--解决测试java环境中sevlet-api的依赖,具体原因下面测试部分会写-->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>     <!--在运行时加载依赖,但是打包时不打包进去-->
        </dependency>
测试

Mybatis扫描mapper包下的接口后,会自动生成与接口对应的实现类,而与之对应的Sql语句谁存放在xml文件中的

创建接口bookReview/mapper/TestMapper

package bookReview.mapper;

public interface TestMapper {
    public void insert();
}

创建src/main/resources/mappers/test.xml

注意mapper namespace要对应接口的路径

<?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="bookReview.mapper.TestMapper">
    <insert id="insert">    <!--id对应接口方法名-->
        insert into test(content) values('测试内容');
    </insert>
</mapper>

创建服务类bookReview/service/TestService

测试插入5条数据

package bookReview.service;

import bookReview.mapper.TestMapper;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

@Service
public class TestService {
    @Resource
    private TestMapper testMapper;

    public void batchImport(){
        for (int i = 0; i < 5; i++) {
            testMapper.insert();
        }
    }
}

创建测试用例,在TestService点击菜单代码-生成-测试,勾选需要测试的方法;在自动生成的类中增加spring支持的注解

package bookReview.service;

import junit.framework.TestCase;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.annotation.Resource;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class TestServiceTest extends TestCase {

    @Resource
    private TestService testService;

    @Test
    public void testBatchImport() {
        testService.batchImport();
        System.out.println("批量导入成功");
    }
}

运行测试方法,第一次运行会报错提示:java.lang.NoClassDefFoundError: javax/servlet/ServletContext

原因是javax/servlet/ServletContext这个类默认是由tomcat提供的,而现在的运行环境是java环境跟tomcat没有任何联系,为了解决这个问题,我们还需要在pom.xml中去依赖javax/servlet/ServletContext

在单元测试junit下增加:

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>     <!--在运行时加载依赖,但是打包时不打包进去-->
        </dependency>

重新运行,执行成功!数据库加入了数据

加入logback日志组件

pom.xml

        <!--logback日志组件-->
        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>1.2.3</version>
        </dependency>

可以对日志格式进行调整

创建指定文件src/main/resources/logback.xml

配置声明式事务

通过配置或注解的形式简化程序中的注解管理

例如假设上面插入程序过程中产生异常,数据完整性就会被破坏

TestService

    public void batchImport(){
        for (int i = 0; i < 5; i++) {
          	if(i==3){
              	throw new RuntimeException("预期外的异常");
            }
            testMapper.insert();
        }
    }

配置声明式事务在当前的依赖包中要存在spring-tx,这个包包含在spring-jdbc中一并引入

applicationContext.xml

引入tx命名空间

<?xml version="1.0" encoding="UTF-8"?>
<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"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://www.springframework.org/schema/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd">

配置声明式事务

    <!--声明式事务配置-->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>    <!--因为前面配置好的数据源dataSource-->
    </bean>
    <!--启用注解模式事务,看到annotation-driven就是启用xxx对应的注解模式-->
    <tx:annotation-driven transaction-manager="transactionManager"/>

配置完成,在需要调用事务的方法上增加@Transactional注解即可

程序成功运行全局提交,如果抛出运行时异常则回滚事务

package bookReview.service;

import bookReview.mapper.TestMapper;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import javax.annotation.Resource;

@Service
public class TestService {
    @Resource
    private TestMapper testMapper;

    @Transactional
    public void batchImport(){
        for (int i = 0; i < 5; i++) {
            if (i == 3) {
                throw new RuntimeException("预期外的异常");
            }
            testMapper.insert5();
        }
    }
}

三. MyBatis-Plus介绍与整合步骤

Mybatis-Plus是基于Mybatis基础上的一个敏捷开发插件,可以帮助我们快速的完成对应数据表的增删改查操作

  • MyBatis-Plus(简称MP)是国人开发的一个MyBatis的增强工具
  • 自动实现Mapper CRUD操作,极致提高数据库开发效率
  • MP在MyBatis的基础上只做增强不做改变

之前的程序,实现增删改查需要声明接口,写对应sql语句,再进行调用,不是很方便

MyBatyis-Plus整合

  • pom引入mybatis-plus依赖
  • Spring XML更改配置SqlSessionFactory实现类
  • mybatis-config.xml增加MP分页插件

pom引入mybatis-plus依赖

<!--MyBatis-Plus依赖-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.4.3.4</version>
</dependency>

Spring XML更改配置SqlSessionFactory实现类

只需要将原有的SqlSessionFactory实现调整一行,将类变更即可

    <!--SqlSessionFactoryBean用于根据配置信息创建SqlSessionFactory,不再需要我们自己编码创建-->
    <!--原生的Mybatis与spring整合-->
<!--    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">-->
    <bean id="sessionFactory"  class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath:mappers/*.xml"/>
        <!--MyBatis配置文件地址-->
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
    </bean>

mybatis-config.xml增加MP分页插件;注意插件版本3.3.2,我用3.4试了一下发现插件名不一样导致用报错,不知道还要改哪里配置,就用3.3.2版本继续了

<?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>
    <plugins>
        <plugin interceptor="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor"></plugin>
    </plugins>
</configuration>

MyBatis-Plus开发

  • 创建实体类,@TableName/@TableId/@TableFieId实现映射
  • 创建Mapper接口继承BaseMapper,创建Mapper XML
  • 开发时注入Mapper对象,通过内置API实现CRUD操作

MyBatis-Plus核心注解

@TableName 将实体类与表名映射

@TableId 说明对应属性时表的主键

@TableFieId 设置属性与列明的对应关系

BaseMapper接口核心API
在这里插入图片描述

案例
创建实体类,@TableName/@TableId/@TableFieId实现映射

每一个MP表都要有一个对应都实体,新增实体包和实体类

bookReview/eneity/Test

package bookReview.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

@TableName("test")  //说明实体类对应哪一张表
public class Test {
    @TableId(type = IdType.AUTO)    //主键;自动递增
    @TableField("id")   //说明属性对应哪个字段
    private Integer id;
    @TableField("content")  //如果字段名与属性名相同或者符合驼峰命名转换规则,则TableField可以省略;如article_content属性名写articleContent
    private String content;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }
}
创建Mapper接口继承BaseMapper,创建Mapper XML

bookReview/mapper/TestMapper

package bookReview.mapper;

import bookReview.entity.Test;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;

public interface TestMapper extends BaseMapper<Test> {
    public void insert5();  //之前自定义的insert5方法也可以使用,注意不要与BaseMapper接口方法重名
}

注意自定义的方法名要与之前创建的src/main/resources/mappers/test.xml中id对应

开发时注入Mapper对象,通过内置API实现CRUD操作

新建测试用例方法TestMyBatisPlus;注意注入TestMapper接口而不是之前的TestService类了;自定义的TestMapper接口继承了BaseMapper接口,包含了CRUD方法;

package bookReview.service;

import bookReview.entity.Test;
import bookReview.mapper.TestMapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.junit.runner.RunWith;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import javax.annotation.Resource;
import java.util.List;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:applicationContext.xml"})
public class TestMyBatisPlus {
    @Resource
    private TestMapper testMapper;

    @org.junit.Test
    public void testInsert(){
        Test test = new Test();
        test.setContent("MyBatis Plus测试");
        testMapper.insert(test);
    }

    @org.junit.Test
    public void testUpdate(){
        Test test = testMapper.selectById(52);
        test.setContent("MyBatis Plus测试1");
        testMapper.updateById(test);
    }

    @org.junit.Test
    public void testDelete(){
        testMapper.deleteById(9);
    }

    @org.junit.Test
    public void testSelect(){
        QueryWrapper<Test> queryWrapper = new QueryWrapper<Test>();
        queryWrapper.eq("id",52);    //等值比较
        queryWrapper.gt("id", 52);     //id大于5  两个条件一起写可以追加
        List<Test> list = testMapper.selectList(queryWrapper);
        System.out.println(list.get(0));
    }

}

通过MyBatis-Plus可以根据配置好的映射关系,自动生成sql语句,极大的减少了我们的工作量

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:像素格子 设计师:CSDN官方博客 返回首页

打赏作者

WalkingWithTheWind~

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值