也可以按照如下来完成
先引入pom
`
org.springframework.boot
spring-boot-starter
org.springframework.boot
spring-boot-starter-test
test
com.baomidou
mybatis-plus-generator
3.5.3
io.springfox
springfox-boot-starter
3.0.0
org.projectlombok
lombok
com.baomidou
mybatis-plus-boot-starter
3.5.2
mysql
mysql-connector-java
org.freemarker
freemarker
org.springframework.boot
spring-boot-starter-web
`
修改配置文件:
spring:
datasource:
url: jdbc:mysql:///java_shop
username: root
password:
driver-class-name: com.mysql.cj.jdbc.Driver
mvc:
pathmatch:
matching-strategy: ant_path_matcher
增加一个测试类:
public class Test {
public static void main(String[] args) {
FastAutoGenerator.create("jdbc:mysql:///java_shop", "root", "")
.globalConfig(builder -> {
builder.author("zt") // 设置作者
.enableSwagger() // 开启 swagger 模式
.fileOverride() // 覆盖已生成文件
.outputDir("D:\\Program Files\\idea_workspace\\202207\\mp\\src\\main\\java"); // 指定输出目录
})
.packageConfig(builder -> {
builder.parent("com.zt") // 设置父包名
//.moduleName("system") // 设置父包模块名
.pathInfo(Collections.singletonMap(OutputFile.xml, "D:\\Program Files\\idea_workspace\\202207\\mp\\src\\main\\resources\\mappers")); // 设置mapperXml生成路径
})
.strategyConfig(builder -> {
builder.addInclude("java_user") // 设置需要生成的表名
.addTablePrefix("java_"); // 设置过滤表前缀
})
.strategyConfig(builder -> {
builder.addInclude("java_cart") // 设置需要生成的表名
.addTablePrefix("java_"); // 设置过滤表前缀
})
.templateEngine(new FreemarkerTemplateEngine()) // 使用Freemarker引擎模板,默认的是Velocity引擎模板
.execute();
}
}
修改连接数据库的url 、username、password, 包名,还有就是你要生成的表名
运行如上代码后,就会自动生成相应的controller、service、mapper、entity等

以上红框内的内容都是自动生成的,以上代码可以实现简单的单表增删改查操作:
例如在mapper层:
查询所有:selectList
增加: insert
根据id删除:deleteById
根据id修改: updateById
根据id查询:selectById
这里可以参考https://baomidou.com/pages/49cc81/#service-crud-接口
注意点: **以上程序若想执行成功,需要在启动类头上配置@MapperScan("com.zt.mapper")**
测试一下以上的生成:


1.引入依赖
<dependency>
<groupId>com.github.yulichanggroupId>
<artifactId>mybatis-plus-joinartifactId>
<version>1.2.4version>
dependency>
2.一对多
一个商品对应一种类型
@TableName("java_categroy")
@Data
@ToString
@ApiModel(value = "Categroy对象", description = "")
public class Categroy implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
private String name;
@ApiModelProperty("1.一级 2.二级 3.三级")
private Integer type;
@ApiModelProperty("父级id,若是一级,则是0 ")
private Integer parentId;
@ApiModelProperty("显示时的顺序")
private Integer orderNum;
private LocalDateTime createTime;
private LocalDateTime updateTime;
@Data
@ToString
@TableName("java_product")
@ApiModel(value = "Product对象", description = "")
public class Product implements Serializable {
private static final long serialVersionUID = 1L;
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
private String pname;
private String image;
@ApiModelProperty("产品详情")
private String detail;
@ApiModelProperty("分类id")
private Integer categroyId;
private Object price;
@ApiModelProperty("库存")
private Integer stock;
private LocalDateTime createTime;
private LocalDateTime updateTime;
产生中间实体:修改相同字段
@Data
public class ProductDto extends Categroy implements Serializable {
private static final long serialVersionUID = 1L;
private Integer pid;
private String pname;
private String image;
@ApiModelProperty("产品详情")
private String detail;
@ApiModelProperty("分类id")
private Integer categroyId;
private Object price;
@ApiModelProperty("库存")
private Integer stock;
private LocalDateTime pcreateTime;
private LocalDateTime pupdateTime;
@Override
public String toString() {
return "Product{" +
"pid = " + pid +
", pname = " + pname +
", image = " + image +
", detail = " + detail +
", categroyId = " + categroyId +
", price = " + price +
", stock = " + stock +
", pcreateTime = " + pcreateTime +
", pupdateTime = " + pupdateTime +
", Categroy{ id = " + super.getId() +
", name = " + getName() +
"}";
}
修改mapper的extends MPJBaseMapper
public interface ProductMapper extends MPJBaseMapper<Product> {
}
修改service接口
public interface IProductService extends IService<Product> {
List<ProductDto> selectAllProduct();
}
修改service实现
@Service
public class ProductServiceImpl extends ServiceImpl<ProductMapper, Product> implements IProductService {
@Autowired
private ProductMapper productMapper;
@Override
public List<ProductDto> selectAllProduct() {
List<ProductDto> list = productMapper.selectJoinList(ProductDto.class,
new MPJLambdaWrapper<Product>()
.selectAll(Product.class)
.selectAll(Categroy.class)
.selectAs(Product::getId,ProductDto::getPid)
.selectAs(Product::getCreateTime,ProductDto::getPcreateTime)
.selectAs(Product::getUpdateTime,ProductDto::getPupdateTime)
.leftJoin(Categroy.class,Categroy::getId,Product::getCategroyId)
.ne(Product::getStock,0)
);
return list;
}
}

编写测试类
@Autowired
private IProductService productService;
@Test
public void test02(){
List<ProductDto> list = productService.selectAllProduct();
list.forEach(System.out::println);
}
测试结果:

多对多操作:
@Override
public List<OrderDto> selectByUid(Integer uid, Integer flag) {
List<OrderDto> list ;
if (flag == null){
list = orderMapper.selectJoinList(OrderDto.class,
new MPJLambdaWrapper<Order>()
.selectAll(Order.class)
.selectAs(Order::getId,OrderDto::getDid)
.selectAs(Order::getCreateTime,OrderDto::getDcreateTime)
.selectAs(Order::getUpdateTime,OrderDto::getDupdateTime)
.eq(Order::getUserId,uid)
);
}else{
list = orderMapper.selectJoinList(OrderDto.class,
new MPJLambdaWrapper<Order>()
.selectAll(Order.class)
.selectAs(Order::getId,OrderDto::getDid)
.selectAs(Order::getCreateTime,OrderDto::getDcreateTime)
.selectAs(Order::getUpdateTime,OrderDto::getDupdateTime)
.eq(Order::getUserId,uid)
.eq(Order::getOrderStatus,flag)
);
}
if(list.size()>0){
for (OrderDto item : list){
LambdaQueryWrapper<OderItem> wrapper = Wrappers.lambdaQuery(OderItem.class)
.in(OderItem::getOrderNo, item.getOrderNo());
// 通过订单号查询顶顶那详情
List<OderItem> listoderitem = oderItemMapper.selectList(wrapper);
List<OderItemDto> itemDtos = new ArrayList<>();
if (listoderitem.size()>0){
for(int i = 0 ; i < listoderitem.size(); i++){
OderItemDto dto = new OderItemDto();
LambdaQueryWrapper<Product> wrapper1 = Wrappers.lambdaQuery(Product.class)
.eq(Product::getId, listoderitem.get(i).getProductId());
Product product = productService.getOne(wrapper1);
dto.setPname(product.getPname());
dto.setQuantity(listoderitem.get(i).getQuantity());
dto.setUnitPrice(listoderitem.get(i).getUnitPrice());
itemDtos.add(dto);
}
}
item.setList(itemDtos);
}
}
return list;
}
可以去资源下载项目参考: smp_shop