MyBatis-Plus ,引用官网的说法:
2、创建MybatisPlus项目MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
开发环境
- JDK 1.8
- SpringBoot2.2.1
- Maven 3.2+
- Mysql5.7.36
- 开发工具
- IntelliJ IDEA
- smartGit
使用阿里的脚手架,链接:https://start.aliyun.com
选择mybatis plus framework
新建application.yml,加上配置:
mybatis-plus: type-aliases-package: com.example.mybatisplus.*.*.model mapper-locations: classpath*:mapper @Data public class ResultBean{ private int status; private String desc; private T data; public ResultBean(int status, String desc, T data) { this.status = status; this.desc = desc; this.data = data; } public ResultBean(T data) { this.status = HttpStatus.OK.value(); this.desc = "处理成功"; this.data = data; } public static ResultBean ok(T data) { return new ResultBean(data); } public static ResultBean ok() { return new ResultBean(null); } public static ResultBean badRequest(String desc,T data) { return new ResultBean(HttpStatus.BAD_REQUEST.value(), desc, data); } public static ResultBean badRequest(String desc) { return new ResultBean(HttpStatus.BAD_REQUEST.value(), desc, null); } public static ResultBean serverError(String desc, T data){ return new ResultBean(HttpStatus.INTERNAL_SERVER_ERROR.value(),"服务器内部异常:"+desc,data); } public static ResultBean serverError(String desc){ return new ResultBean(HttpStatus.INTERNAL_SERVER_ERROR.value(),"服务器内部异常:"+desc,null); } }
4、多数据源配置com.baomidou dynamic-datasource-spring-boot-starter3.4.1
pom加上配置:
com.baomidou mybatis-plus-boot-starter-test3.4.3.4
多数据源,参考官网
spring: datasource: dynamic: primary: shop #设置默认的数据源或者数据源组,默认值即为master strict: false #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源 datasource: shop: url: jdbc:mysql://127.0.0.1:3306/shop?useUnicode=true&characterEncoding=utf-8 username: root password: driver-class-name: com.mysql.jdbc.Driver # 3.2.0开始支持SPI可省略此配置 schema: classpath:db/schema-mysql.sql data: classpath:db/data-mysql.sql slave_1: url: jdbc:mysql://127.0.0.1:3306/canaltest?useUnicode=true&characterEncoding=utf-8 username: root password: driver-class-name: com.mysql.jdbc.Driver
表格来自官网:
package com.example.mybatisplus.mapper; import com.baomidou.dynamic.datasource.annotation.DS; import com.baomidou.mybatisplus.core.mapper.baseMapper; import com.example.mybatisplus.model.User; @DS(value = "shop") public interface UserMapper extends baseMapper{ }
有些版本可能可能会出现异常:Failed to configure a DataSource: ‘url‘ attribute is not specified and no embedded datasource
这种情况,可以排查数据源的自动配置
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class})5、MybatisPlus测试
pom配置:
com.baomidou mybatis-plus-boot-starter-test3.4.3.4
测试类:
package com.example.mybatisplus; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.test.autoconfigure.MybatisPlusTest; import com.example.mybatisplus.mapper.UserMapper; import com.example.mybatisplus.model.User; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import java.util.List; @MybatisPlusTest class MybatisPlusSampleTest { @Autowired private UserMapper userMapper; @Test void test() { List6、和Lambda表达式的妙用userList = userMapper.selectList(new QueryWrapper ()); userList.stream().forEach(System.out::println); } }
mybatisPlus支持Lambda表示式,单表查询的业务一遍用不上,还是给下具体的业务场景:列举电商spu和sku的例子,spu表和sku表有一张关联表,传入一个spuCode,查询对应的spu清单,具体sql
SELECT * FROM t_sku sku LEFT JOIN t_spu_sku_relate r ON sku.skuCode = r.skuCode WHERe r.spuCode = #{spuCode};
先查出关联表数据,然后再查具体的业务表,可以使用LambdaQueryWrapper表达式
String spucode = "123456"; final Listlist = new ArrayList (); relationMapper.selectList(new LambdaQueryWrapper () .eq(SkuSpuRelationBean::getSpuCode, spuCode)).forEach( relation -> list.add( skuMapper.selectById(relation.getSkuCode())) );
再给一个例子,使用了in,然后再嵌套一条sql的:
SELECT * FROM t_sku sku WHERe sku.skuCode IN ( SELECt skuCode form t_spu_sku_relate WHERe spu_code = '123456');
使用LambdaQueryWrapper加上inSql来实现:
LambdaQueryWrapperqueryWrapper = new LambdaQueryWrapper (); queryWrapper.inSql(SkuBean::getSkuCode, "SELECT SKU_CODE FROM T_SKU_SPU_RELATE WHERe SPU_CODE = '123456'"); List skus = skuDao.selectList(queryWrapper);
本博客代码例子,可以在github找到下载链接
博客参考资料MybatisPlus官方文档:https://baomidou.com/pages/24112f/
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)