1-5 MyBatisPlus集成

// 品牌ID

// MyBatisPlus主键策略注解

@TableId(type= IdType.AUTO)

private Integer id;

// 品牌名字

private String name;

// 品牌图片

private String image;

// 品牌首字母

private String initial;

// 品牌排序

private Integer sort;

}

主键生成策略

| AUTO | 数据库ID自增 |

| — | — |

| NONE | 无状态,该类型为未设置主键类型(注解里等于跟随全局,全局里约等于 INPUT) |

| INPUT | insert前自行set主键值 |

| ASSIGN_ID | 分配ID(主键类型为Number(Long和Integer)或String)(since 3.3.0),使用接口IdentifierGenerator的方法nextId(默认实现类为DefaultIdentifierGenerator雪花算法) |

| ASSIGN_UUID | 分配UUID,主键类型为String(since 3.3.0),使用接口IdentifierGenerator的方法nextUUID(默认default方法) |

| ID_WORKER | 分布式全局唯一ID 长整型类型(please use ASSIGN_ID) ,已过时 |

| UUID | 32位UUID字符串(please use ASSIGN_UUID) ,已过时 |

| ID_WORKER_STR | 分布式全局唯一ID 字符串类型(please use ASSIGN_ID) ,已过时 |

项目工程结构如下:

1-5 MyBatisPlus集成

3)商品微服务

mall-service中创建mall-goods-service微服务,用于操作shop_goods数据库。

pom.xml代码如下:

<?xml version="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”>

mall-service

com.bobo.vip.mall

1.0-SNAPSHOT

4.0.0

mall-goods-service

shop_goods微服务

com.bobo.vip.mall

goods-api

1.0-SNAPSHOT

【一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义】

浏览器打开:qq.cn.hn/FTf 免费领取

创建bootstrap.yml,配置如下:

server:

port: 8081

spring:

application:

name: mall-goods

datasource:

driver-class-name: com.mysql.cj.jdbc.Driver

url: jdbc:mysql://192.168.100.140:3306/shop_goods?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC

username: root

password: 123456

cloud:

nacos:

config:

file-extension: yaml

server-addr: 192.168.100.140:8848

discovery:

#Nacos的注册地址

server-addr: 192.168.100.140:8848

MybatisPlus

mybatis-plus:

mapper-locations: mapper/*.xml

type-aliases-package: com.bobo.vip.mall.*.model

configuration:

map-underscore-to-camel-case: true

log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

#日志配置

logging:

pattern:

console: “%msg%n”

配置说明:

type-aliases-package:指定JavaBean的别名包,和MyBatis用法一样。

mapper-locations:复杂的操作可能需要自己写SQL,SQL可以写到xml文件中,这里指定和Dao对应的xml文件,此时我们需要在resources中创建一个mapper目录。

map-underscore-to-camel-case:开启驼峰功能,数据库表列名如果有_,可以自动按驼峰命名规则转换。

log-impl:日志开启,方便测试。

创建启动类com.bobo.vip.mall.MallGoodsServiceApplication

@SpringBootApplication

@MapperScan(basePackages = {“com.bobo.vip.mall.goods.mapper”})

public class MallGoodsServiceApplication {

public static void main(String[] args) {

SpringApplication.run(MallGoodsServiceApplication.class,args);

}

}

此时启动程序,查看Nacos控制台:http://192.168.100.140:8848/nacos 账号和密码都是nacos,效果如下:

1-5 MyBatisPlus集成

3、MyBatisPlus操作案例


我们创建一个品牌操作的功能,实现品牌增删改查,分别创建modelmapperservicecontroller

MyBatisPlus提供了很多通用方法:

mapper(接口)->extends BaseMapper【增删改查】

service(接口)->extends IService【增删改查】

serviceImpl->extends ServiceImpl【增删改查】

3.1 Mapper创建

mall-goods-service创建com.bobo.vip.mall.goods.mapper.BrandMapper接口,代码如下:

public interface BrandMapper extends BaseMapper {

}

代码说明:BaseMapper中已经存在了很多常见数据库操作方法,可以大幅提升开发速度。

3.2 Service创建

mall-goods-service创建com.bobo.vip.mall.goods.service.BrandService接口,代码如下:

public interface BrandService extends IService{

}

mall-goods-service创建com.bobo.vip.mall.goods.service.impl.BrandServiceImpl实现类,代码如下:

@Service

public class BrandServiceImpl extends ServiceImpl<BrandMapper,Brand> implements BrandService {}

代码说明:IServiceServiceImpl中已经创建好了很多常用的增删改查方法,我们写常用的增删改查,几乎不用写方法。

3.3 增删改功能

增删改功能在IServiceServiceImpl中已经全部存在, 不需要额外添加方法,只需要在Controller调用即可。

mall-goods-service创建com.bobo.vip.mall.goods.controller.BrandController,代码如下:

@RestController

@RequestMapping("/brand")

public class BrandController {

@Autowired

private BrandService service;

/**

  • 添加品牌

  • @param brand

  • @return

*/

@PostMapping

public RespResult save(@RequestBody Brand brand){

service.save(brand);

return RespResult.ok();

}

/****

  • 修改

*/

@PutMapping

public RespResult update(@RequestBody Brand brand){

//修改品牌

service.updateById(brand);

return RespResult.ok();

}

/****

  • 删除品牌

*/

@DeleteMapping("/{id}")

public RespResult delete(@PathVariable(value = “id”) Integer id){

//删除品牌

service.removeById(id);

return RespResult.ok();

}

}

重启服务然后我们通过Postman来测试即可

表结构中原有数据

1-5 MyBatisPlus集成

Postman中的数据

1-5 MyBatisPlus集成

点击Send后查看数据库中数据

1-5 MyBatisPlus集成

操作成功

1-5 MyBatisPlus集成

修改删除操作是一样的,就不再截图演示了,大家可以自行尝试下哦!

4.4 条件查询/分页

条件查询需要封装条件信息,MyBatis Plus提供了条件封装对象Wrapper(它的子类QueryWrapper可以直接使用),我们可以用它的子类QueryWrapper实现封装查询条件。

4.4.1 条件查询

BrandService中创建如下方法:

List queryList(Brand brand);

BrandServiceImpl中创建条件查询方法实现(不要忘了注入brandMapper):

/**

  • 多条件查询

  • @param brand

  • @return

*/

@Override

public List queryList(Brand brand) {

// 多条件构造器

QueryWrapper queryWrapper = new QueryWrapper<>();

if(brand != null){

if(!StringUtils.isEmpty(brand.getName())){

queryWrapper.like(“name”,brand.getName());

}

if(!StringUtils.isEmpty(brand.getInitial())){

queryWrapper.eq(“initial”,brand.getInitial());

}

}

return mapper.selectList(queryWrapper);

}

代码说明:

like:表示模糊查询

eq:表示等值查询

BrandController中创建条件查询方法:

/****

  • 条件查询

*/

@PostMapping(value = “/list”)

public RespResult<List> list(@RequestBody(required = false) Brand brand){

// 查询

List brands = brandService.queryList(brand);

return RespResult.ok(brands);

}

不带参数查询所有的数据

1-5 MyBatisPlus集成

带参数查询

1-5 MyBatisPlus集成

4.4.2 分页查询

BrandService中创建如下方法:

Page queryPageList(Long currentPage,Long size,Brand brand);

BrandServiceImpl中创建条件查询方法实现(不要忘了注入brandMapper):

/***

  • 分页查询

  • @param brand

  • @return

*/

@Override

public Page queryPageList(Long currentPage, Long size, Brand brand) {

// 封装查询条件

Page page = brandMapper.selectPage(

new Page(currentPage, size),

new QueryWrapper()

.like(“name”, brand.getName()));

return page;

}

代码说明:

like:表示模糊查询

BrandController中创建条件查询方法:

/****

  • 条件分页查询

*/

@PostMapping(value = “/list/{page}/{size}”)

public RespResult<Page> list(

@PathVariable(value = “page”)Long currentPage,

上一篇:Verilog学习之路(4)— Verilog HDL的程序设计语句


下一篇:Verilog中的阻塞与非阻塞赋值