目录
8.编写测试用例
3.使用MP中的MybatisSqlSessionFactoryBuilder进程构建
Mybatis-Plus是Mybatis的增强工具,只增强不改变,为简化开发,提高效率
损耗小
强大的CRUD操作
支持lambda形式调用
支持多种数据库
支持主键自动生成
……

- "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.0modelVersion>
-
- <groupId>com.mpgroupId>
- <artifactId>mybatis_mpartifactId>
- <packaging>pompackaging>
- <version>1.0-SNAPSHOTversion>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.pluginsgroupId>
- <artifactId>maven-compiler-pluginartifactId>
- <version>3.8.1version>
- <configuration>
- <source>1.8source>
- <target>1.8target>
- configuration>
- plugin>
- plugins>
- build>
- <modules>
- <module>mybatismodule>
- modules>
-
- <properties>
- <maven.compiler.source>8maven.compiler.source>
- <maven.compiler.target>8maven.compiler.target>
- <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
- properties>
- <dependencies>
- <dependency>
- <groupId>com.baomidougroupId>
- <artifactId>mybatis-plusartifactId>
- <version>3.5.2version>
- dependency>
- <dependency>
- <groupId>mysqlgroupId>
- <artifactId>mysql-connector-javaartifactId>
- <version>8.0.30version>
- dependency>
- <dependency>
- <groupId>com.alibabagroupId>
- <artifactId>druidartifactId>
- <version>1.2.15version>
- dependency>
- <dependency>
- <groupId>org.projectlombokgroupId>
- <artifactId>lombokartifactId>
- <version>1.18.24version>
- dependency>
- <dependency>
- <groupId>junitgroupId>
- <artifactId>junitartifactId>
- <version>4.13.2version>
- dependency>
- <dependency>
- <groupId>org.slf4jgroupId>
- <artifactId>slf4j-apiartifactId>
- <version>2.0.5version>
- dependency>
- dependencies>
-
- project>
- "1.0" encoding="UTF-8" ?>
- configuration
- PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-config.dtd">
- <configuration>
- <environments default="development">
- <environment id="development">
- <transactionManager type="JDBC"/>
- <dataSource type="POOLED">
- <property name="driver" value="com.mysql.jdbc.Driver"/>
- <property name="url" value="jdbc:mysql://127.0.0.1:3306/zxkt?
- useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQuerie
- s=true&useSSL=false"/>
- <property name="username" value="root"/>
- <property name="password" value="1234"/>
- dataSource>
- environment>
- environments>
- <mappers>
- <mapper resource="UserMapper.xml"/>
- mappers>
- configuration>
- package com.mp.pojo;
-
- import lombok.AllArgsConstructor;
- import lombok.Data;
- import lombok.NoArgsConstructor;
-
- @Data
- @NoArgsConstructor
- @AllArgsConstructor
- public class User {
- private long id;
- private String user_name;
- private String password;
- private String name;
- private Integer age;
- private String email;
-
- }
- package com.mp.mapper;
-
- import com.mp.pojo.User;
-
- import java.util.List;
-
- public interface UserMapper {
- List
findAll(); - }
- "1.0" encoding="UTF-8" ?>
- mapper
- PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
- "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
- <mapper namespace="com.mp.mapper.UserMapper">
- <select id="findAll" resultType="com.mp.pojo.User">
- select * from tb_user
- select>
- mapper>
- import com.mp.mapper.UserMapper;
- import com.mp.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.Test;
-
- import java.io.IOException;
- import java.io.InputStream;
- import java.util.List;
-
- public class test_mybatis {
-
- @Test
- public void testFindAll() throws IOException {
- String config = "mybatis-config.xml";
- InputStream inputStream = Resources.getResourceAsStream(config);
- SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
-
- SqlSession sqlSession = sqlSessionFactory.openSession();
- UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
-
- List
users = userMapper.findAll(); - for(User user : users) {
- System.out.println(user);
- }
- }
- }
在上述Mybatis的基础上做如下修改
- public interface UserMapper extends BaseMapper
{ - List
findAll(); - }
- package com.mp.pojo;
-
- import com.baomidou.mybatisplus.annotation.TableName;
- import lombok.AllArgsConstructor;
- import lombok.Data;
- import lombok.NoArgsConstructor;
-
- @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;
-
- }
- public class TestMybatisPlus {
- @Test
- public void testUserList() throws Exception{
- String resource = "mybatis-config.xml";
- InputStream inputStream = Resources.getResourceAsStream(resource);
- //这里使用的是MP中的MybatisSqlSessionFactoryBuilder
- SqlSessionFactory sqlSessionFactory = new MybatisSqlSessionFactoryBuilder().build(inputStream);
- SqlSession sqlSession = sqlSessionFactory.openSession();
- UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
-
- // 可以调用BaseMapper中定义的方法
- List
list = userMapper.selectList(null); - for (User user : list) {
- System.out.println(user);
- }
- }
- "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>
- <artifactId>mybatis_mpartifactId>
- <groupId>com.mpgroupId>
- <version>1.0-SNAPSHOTversion>
- parent>
- <modelVersion>4.0.0modelVersion>
-
- <artifactId>mybatis_mp_springartifactId>
-
- <properties>
- <maven.compiler.source>8maven.compiler.source>
- <maven.compiler.target>8maven.compiler.target>
- <project.build.sourceEncoding>UTF-8project.build.sourceEncoding>
- <spring.version>5.1.6.RELEASEspring.version>
- properties>
-
- <dependencies>
- <dependency>
- <groupId>org.springframeworkgroupId>
- <artifactId>spring-webmvcartifactId>
- <version>${spring.version}version>
- dependency>
- <dependency>
- <groupId>org.springframeworkgroupId>
- <artifactId>spring-jdbcartifactId>
- <version>${spring.version}version>
- dependency>
- <dependency>
- <groupId>org.springframeworkgroupId>
- <artifactId>spring-testartifactId>
- <version>${spring.version}version>
- dependency>
- dependencies>
-
- project>
- jdbc.driver=com.mysql.jdbc.Driver
- jdbc.url=jdbc:mysql://127.0.0.1:3306/tb_user?
- useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL
- =false
- jdbc.username=root
- jdbc.password=1234
- "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"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context.xsd">
- <context:property-placeholder location="classpath:*.properties"/>
-
- <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
- 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}"/>
- <property name="maxActive" value="10"/>
- <property name="minIdle" value="5"/>
- bean>
-
- <bean id="sqlSessionFactory"
- class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
- <property name="dataSource" ref="dataSource"/>
- bean>
-
- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <property name="basePackage" value="cn.itcast.mp.simple.mapper"/>
- bean>
- beans>
- package com.mp.pojo;
-
- import com.baomidou.mybatisplus.annotation.TableName;
- import lombok.AllArgsConstructor;
- import lombok.Data;
- import lombok.NoArgsConstructor;
-
- @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 com.mp.mapper;
-
- import com.baomidou.mybatisplus.core.mapper.BaseMapper;
- import com.mp.pojo.User;
-
- import java.util.List;
-
- public interface UserMapper extends BaseMapper
{ - List
findAll(); - }
- @RunWith(SpringJUnit4ClassRunner.class)
- @ContextConfiguration(locations = "classpath:applicationContext.xml")
- public class TestSpringMP {
- @Autowired
- private UserMapper userMapper;
- @Test
- public void testSelectList(){
- List
users = this.userMapper.selectList(null); - for (User user : users) {
- System.out.println(user);
- }
- }
- }
- "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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0modelVersion>
-
- <parent>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-parentartifactId>
- <version>2.2.2.RELEASEversion>
- <relativePath/>
- parent>
-
- <groupId>com.mpgroupId>
- <artifactId>SpringBoot_MPartifactId>
- <version>0.0.1-SNAPSHOTversion>
-
- <name>SpringBoot_MPname>
- <description>SpringBoot_MPdescription>
-
- <properties>
- <java.version>1.8java.version>
- properties>
-
- <dependencies>
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starterartifactId>
- dependency>
-
- <dependency>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-starter-testartifactId>
- <scope>testscope>
- <exclusions>
- <exclusion>
- <groupId>org.junit.vintagegroupId>
- <artifactId>junit-vintage-engineartifactId>
- exclusion>
- exclusions>
- dependency>
-
-
- <dependency>
- <groupId>org.projectlombokgroupId>
- <artifactId>lombokartifactId>
- <optional>trueoptional>
- dependency>
-
- <dependency>
- <groupId>com.baomidougroupId>
- <artifactId>mybatis-plus-boot-starterartifactId>
- <version>3.1.1version>
- dependency>
-
- <dependency>
- <groupId>mysqlgroupId>
- <artifactId>mysql-connector-javaartifactId>
- <version>5.1.47version>
- dependency>
- <dependency>
- <groupId>org.slf4jgroupId>
- <artifactId>slf4j-log4j12artifactId>
- dependency>
- <dependency>
- <groupId>junitgroupId>
- <artifactId>junitartifactId>
- <scope>testscope>
- dependency>
-
- dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.pluginsgroupId>
- <artifactId>maven-compiler-pluginartifactId>
- <version>3.8.1version>
- <configuration>
- <source>1.8source>
- <target>1.8target>
- <encoding>UTF-8encoding>
- configuration>
- plugin>
- <plugin>
- <groupId>org.springframework.bootgroupId>
- <artifactId>spring-boot-maven-pluginartifactId>
- plugin>
- plugins>
- build>
-
- project>
- spring.application.name = SpringBoot_MP
- spring.datasource.driver-class-name=com.mysql.jdbc.Driver
- spring.datasource.url=jdbc:mysql://127.0.0.1:3306/zxkt?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=false
- spring.datasource.username=root
- spring.datasource.password=1234
- package com.mp.pojo;
-
- import com.baomidou.mybatisplus.annotation.TableName;
- import lombok.AllArgsConstructor;
- import lombok.Data;
- import lombok.NoArgsConstructor;
- @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 com.mp.mapper;
-
- import com.baomidou.mybatisplus.core.mapper.BaseMapper;
- import com.mp.pojo.User;
- import org.springframework.stereotype.Repository;
-
- @Repository
- public interface UserMapper extends BaseMapper
{ - }
- package com.mp;
-
- import org.mybatis.spring.annotation.MapperScan;
- import org.springframework.boot.SpringApplication;
- import org.springframework.boot.WebApplicationType;
- import org.springframework.boot.autoconfigure.SpringBootApplication;
- import org.springframework.boot.builder.SpringApplicationBuilder;
- @MapperScan("com.mp.mapper") //设置mapper接口的扫描包
- @SpringBootApplication
- public class MyApplication {
- public static void main(String[] args) {
- SpringApplication.run(MyApplication.class, args);
- }
- }
- package com.mp;
-
- import com.mp.mapper.UserMapper;
- import com.mp.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;
- @RunWith(SpringRunner.class)
-
- @SpringBootTest
- public class UserMapperTest {
- @Autowired
- private UserMapper userMapper;
- @Test
- public void testSelect() {
- List
userList = userMapper.selectList(null); - for (User user : userList) {
- System.out.println(user);
- }
- }
- }
- //返回的result是受影响的行数
- int result = usermapper.insert(user);
放在对象类中,想设为主键的属性上方

AUTO是自增长(数据库中的表的对应id需要设为AUTO_INCREMENT)
NONE无策略
INPUT手动输入
通过@TableField可以注解指定字段的一些属性
在对象类中进行注解
- //解决字段名不一致
- @TableField(value = "email")
- private String mail;
- //该字段在数据库表中不存在
- @TableField(exist = false)
- private String address;
- //该字段不加入查询字段
- @TableField(selece = false)
- private String password;
①根据id更新
- public void testUpdateById() {
- User user = new User();
- user.setId(6L); //主键
- user.setAge(21); //更新的字段
-
- //根据id更新,更新不为null的字段
- this.userMapper.updateById(user);
- }
②根据条件更新
- public void testUpdate() {
- User user = new User();
- user.setAge(22); //更新的字段
-
- //更新的条件
- QueryWrapper
wrapper = new QueryWrapper<>(); - wrapper.eq("id", 6);
-
- //执行更新操作
- int result = this.userMapper.update(user, wrapper);
- System.out.println("result = " + result);
- }
①deleteById
userMapper.deleteById(6L);
②deleteByMap
- public void testDeleteByMap() {
- Map
columnMap = new HashMap<>(); - columnMap.put("age",20);
- columnMap.put("name","张三");
-
- //将columnMap中的元素设置为删除的条件,多个之间为and关系
- int result = this.userMapper.deleteByMap(columnMap);
- System.out.println("result = " + result);
- }
③delete
- public void testDeleteByMap() {
- User user = new User();
- user.setAge(20);
- user.setName("张三");
-
- //将实体对象进行包装,包装为操作条件
- QueryWrapper
wrapper = new QueryWrapper<>(user); -
- int result = this.userMapper.delete(wrapper);
- System.out.println("result = " + result);
- }
④批量删除
userMapper.deleteBatchIds(Arrays.asList(1L,10L,20L));
①selectById
userMapper.selectById(2L);
②selectBatchlds
- List
users = this.userMapper.selectBatchIds(Arrays.asList(2L, 3L, 10L)); - for (User user : users) {
- System.out.println(user);
- }
③selectOne
- QueryWrapper
wrapper = new QueryWrapper(); - wrapper.eq("name", "李四");
-
- //根据条件查询一条数据,如果结果超过一条会报错
- User user = this.userMapper.selectOne(wrapper);
④selectCount
- QueryWrapper
wrapper = new QueryWrapper(); - wrapper.gt("age", 23); //年龄大于23岁
-
- //根据条件查询数据条数
- Integer count = this.userMapper.selectCount(wrapper);
⑤selectList
- QueryWrapper
wrapper = new QueryWrapper(); - wrapper.gt("age", 23); //年龄大于23岁
-
- //根据条件查询数据
- List
users = this.userMapper.selectList(wrapper); - for (User user : users) {
- System.out.println("user = " + user);
- }
⑥selectPage
创建config包,在其中创建config对象如下
配置分页插件
- @Configuration
- @MapperScan("com.mp.mapper") //设置mapper接口的扫描包
- public class MybatisPlusConfig {
- /**
- * 分页插件
- */
- @Bean
- public PaginationInterceptor paginationInterceptor() {
- return new PaginationInterceptor();
- }
- }
- QueryWrapper
wrapper = new QueryWrapper(); - wrapper.gt("age", 20); //年龄大于20岁
-
- //第一个参数是当前页,第二个是每页显示记录数
- Page
page = new Page<>(1,1); -
- //根据条件查询数据
- IPage
iPage = this.userMapper.selectPage(page, wrapper); - System.out.println("数据总条数:" + iPage.getTotal());
- System.out.println("总页数:" + iPage.getPages());
-
- List
users = iPage.getRecords(); - for (User user : users) {
- System.out.println("user = " + user);
- }
- public interface UserService extends IService
{ - }
- @Service
- public UserServiceImpl extends ServiceImpl
implements UserService{ - }
- @AutoWored
- private UserService userService;
-
- @Test
- public void testQuery() {
- List
list = userService.list(); - System.out.prinlt(list);
- }