一、依赖引入
<!--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的返回值使用