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&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&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语句,极大的减少了我们的工作量