springboot 整合 Mybatis-plus 基础学习

一、依赖引入

        <!--mybatis-plus依赖-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3.1</version>
        </dependency>
        <!--generator包-->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-generator</artifactId>
            <version>3.5.3</version>
        </dependency>
        <!--freemarker模板包-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>

二、配置文件

(根据实际情况调整)

spring.datasource.url=jdbc:mysql://192.168.xx.xxx:xxxx/xxxxxx?useUnicode=true&characterEncoding=UTF-8&useSSL=false
spring.datasource.driverClassName=com.mysql.cj.jdbc.Driver
spring.datasource.username=xxxx
spring.datasource.password=xxxx

#开启sql日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
mybatis-plus.mapper-locations=classpath:mappers/*Mapper.xml
#开启驼峰命名
mybatis-plus.configuration.map-underscore-to-camel-case=true

三、代码生成器

(此为一个简单例子,更多的可参照官方文档)

 public static void main(String[] args) {
        String url = "jdbc:mysql://192.168.xx.xxx:xxxx/xxx?useUnicode=true&characterEncoding=UTF-8&useSSL=false";
        String username = "";
        String password = "";

        //设置需要生成的表名, 用 (,)隔开
        String tableName = "sc_test";

        FastAutoGenerator.create(url, username, password)
                .globalConfig(builder -> {
                    builder.author("kevin") // 设置作者
//                            .enableSwagger() // 开启 swagger 模式
//                            .fileOverride() // 覆盖已生成文件
                            .outputDir("D:\\hc-workspace\\easycode\\advertising\\src\\main\\java"); // 指定输出目录
                })
                .packageConfig(builder -> {
                    builder.parent("com.atomee") // 设置父包名
                            .moduleName("advertising") // 设置父包模块名
                            .pathInfo(Collections.singletonMap(OutputFile.xml,
                                    // 设置mapperXml生成路径
                                    "D:\\hc-workspace\\easycode\\advertising\\src\\main\\resources\\mappers")
                            );

                })
                .strategyConfig(builder -> {
                    builder.
//                            addInclude() // 设置需要生成的表名 如果生成全部就不填
                            addInclude(tableName) // 设置需要生成的表名 如果生成全部就不填
                            .addTablePrefix("t_", "c_") // 设置过滤表前缀
                            //自动lambok
                            .entityBuilder().enableLombok().enableTableFieldAnnotation()
                            //自动加RestController注解
                            .controllerBuilder().enableRestStyle()
                            .mapperBuilder().formatMapperFileName("%sDao");
                })
                .templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
                .execute();



    }

四、分页配置

@Configuration
//扫描mapper包
@MapperScan("com.xxxxx.advertsing.dao")
public class PageConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor(){
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        //添加分页插件
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

五、service

public interface IOrdersService extends IService<Orders> {

}

@Service
public class OrdersServiceImpl extends ServiceImpl<OrdersDao, Orders> implements IOrdersService {

}

六、mapper

public interface OrdersDao extends BaseMapper<Orders> {

}

(启动类记得加上)

@MapperScan("com.xxxx.xxxx.dao")

七、基本使用

mapper文件依然可以同mybatis一样写sql

简单的增删改查可以通过mybatis-plus提供的api实现

    @Resource
    private OrdersServiceImpl ordersService;

查询可以通过查询器实现

    @Resource
    private ScProductListingsMapper scProductListingsMapper;
        QueryWrapper<ScProductListings> productWrapper = new QueryWrapper<>();
        productWrapper.eq("shop_id",toShopId);
        productWrapper.select("product_id");
        Integer count = scProductListingsMapper.selectCount(productWrapper);
        if (count>0){
            return Result.getResult(200,toShopId+"目标商店仍有产品,请先进行清理!",null);
        }

也可以在mapper层通过注解,相关的还有@Select @Update @Insert

    @Delete("DELETE spd  FROM `sc_product_variants` spd,`sc_product_listings` spl\n" +
            "WHERE spd.product_id =   spl.product_id\n" +
            "AND spl.shop_id = #{shopId}")
    Integer deleteByShopId(@Param("shopId") Long shopId);

八、分页使用

    @Test
    void testSelectPage(){
        // 1.pageNum 3:pageSize
        Page<ShopifyUsers> page = new Page<>(1,3);
        Page<ShopifyUsers> result = scShopifyUsersDao.selectPage(page, null);
        System.out.println(result);
    }

复杂的sql也可以在mapper层做为api的返回值使用 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值