【Mybatis-Plus】03 SpringBoot整合
创建SpringBoot工程:
选择辅助三件套:
再导入MP相关依赖坐标:
<!-- jdbc --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- mybatis-plus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version> </dependency> <!-- spring-jdbc --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- spring-web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
创建MP的分页配置类:
package cn.echo42.configuration; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; /** * @author DaiZhiZhou * @file MP-SpringBoot * @create 2020-08-06 4:38 */ @Configuration @ConditionalOnClass({PaginationInterceptor.class}) public class MybatisPlusConfiguration { @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } }
application.yml配置:
#数据源 spring: datasource: # 数据源类型 type: org.springframework.jdbc.datasource.DriverManagerDataSource # 驱动目录 driver-class-name: com.mysql.cj.jdbc.Driver # 数据库访问url url: jdbc:mysql://127.0.0.1:3306/oa?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=UTC # 访问账号 username: root # 访问密码 password: 123456 #配置mybatis-plus mybatis-plus: # mapper映射器位置 mapper-locations: - classpath:mapper/*Mapper.xml # 全局配置 global-config: # 数据库配置 db-config: # 主键类型 自动设置 id-type: auto banner: true
复制之前Spring整合MP的配置:
User.java、UserMapper.java、UserMapper.xml
注意在启动函数这里注解上@MapperScan
package cn.echo42; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; @SpringBootApplication @MapperScan("cn.echo42.mapper") public class MpSpringbootApplication { public static void main(String[] args) { SpringApplication.run(MpSpringbootApplication.class, args); } }
测试类则是SpringBoot现成提供好的:
我们需要自动装配下userMapper,测试方法CV过来就行
package cn.echo42; import cn.echo42.mapper.UserMapper; import cn.echo42.pojo.User; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @SpringBootTest class MpSpringbootApplicationTests { @Autowired UserMapper userMapper; @Test void contextLoads() { } @Test public void mpInsert() { int insert = userMapper.insert(new User( null, "阿伟001", "133778", 1, 0 )); } @Test public void mpUpdate() { UpdateWrapper<User> updateWrapper = new UpdateWrapper<User>(); updateWrapper.eq("user_id", 6); // WHERE user_id = 6 // updateWrapper.between("id", 10, 20); WHERE id BETWEEN 10 AND 20 int update = userMapper.update(new User( null, "杰哥001", "133778", 1, 0 ), updateWrapper); } @Test public void mpDelete() { UpdateWrapper<User> updateWrapper = new UpdateWrapper<User>(); updateWrapper.eq("user_id", 6); // WHERE user_id = 6 // updateWrapper.between("id", 10, 20); WHERE id BETWEEN 10 AND 20 int delete = userMapper.delete(updateWrapper); } @Test public void mpQuery() { User user = userMapper.selectById(3); System.out.println(user); } @Test public void mpQuery2() { List<Serializable> list = new ArrayList<Serializable>(); list.add(2); list.add(4); List<User> userList = userMapper.selectBatchIds(list); for (User user : userList) { System.out.println(user); } } @Test public void mpQuery3() { Map<String, Object> columnMapping = new HashMap<String, Object>(); columnMapping.put("user_is_del", 0); columnMapping.put("user_password", "123456"); List<User> userList = userMapper.selectByMap(columnMapping); for (User user : userList) { System.out.println(user); } } @Test public void mpQuery4() { QueryWrapper<User> userWrapper = new QueryWrapper<User>(); // 假装这是从控制器传递过来的字符串参数 String fromUrlParam = "user"; userWrapper.like(fromUrlParam != null , "user_name", fromUrlParam); // 用来查询符合筛选条件的记录数量 Integer integer = userMapper.selectCount(userWrapper); System.out.println("return rows : " + integer ); } @Test public void mpQuery5() { IPage<User> page = new Page<User>(1, 5); userMapper.selectPage(page, null); long total = page.getTotal(); System.out.println("TotalRecords : " + total); List<User> list = page.getRecords(); for (User user : list) { System.out.println(user); } } }
没打印日志,看不到SQL输出结果,但是测试通过就算有效果了