目錄
⚡Introduction
這是一個基於mybatis-plus官方的AutoGenerator程式碼生成器+定製程式碼模板的springboot程式碼生成器。
使用這個生成器你可以在1分鐘之內生成資料庫表對應的實體類,以及Mapper,Service,Controller層的基本CURD程式碼,並可以立即執行測試介面。
如果你不瞭解什麼是mybatis-plus,請參考官方文件
本程式碼生成器具有以下優點:
-
只需三步,即可開始測試CURD介面
-
生成的程式碼風格良好,註釋詳細(遵循阿里巴巴開發規範)
-
帶有程式執行日誌列印和錯誤日誌列印
✔️Release
立即前往:釋出地址
⭐️Features
- 實現controller restful風格CURD介面
- service層CURD對IService的方法再次封裝,方便新增業務邏輯
- serviceImpl中方法實現執行日誌列印
- mapper模板在官方模板基礎上加入@mapper註解
- 各模板方法新增Javadoc註釋
- 實現分頁查詢,關鍵詞模糊查詢(需自定義欄位)
?Quick Start
動畫演示:
使用步驟:
- 修改application.properties配置檔案,設定資料庫資訊
#DataSource Config
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/flower?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT
spring.datasource.username=root
spring.datasource.password=
- 執行CodeGenerator類,輸入Author,輸入資料庫表名
- 執行SpringbootMybatisPlusGeneratorApplication,測試介面
注意:資料庫表必須符合以下規範
每張表的主鍵命名為 表名_id 如: user_id
?Examples
1.Controller模板程式碼示例
package cn.hellochaos.generator.controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.beans.factory.annotation.Autowired;
import cn.hellochaos.generator.entity.dto.ResultBean;
import cn.hellochaos.generator.service.UserService;
import cn.hellochaos.generator.entity.User;
import org.springframework.web.bind.annotation.RestController;
/**
* <p>
* 使用者 前端控制器
* </p>
*
* @author chaos
* @since 2020-05-02
* @version v1.0
*/
@RestController
@RequestMapping("/generator/api/v1/user")
public class UserController {
@Autowired
private UserService userService;
/**
* 查詢分頁資料
*/
@RequestMapping(method = RequestMethod.GET)
public ResultBean<?> listByPage(@RequestParam(name = "page", defaultValue = "1") int page,
@RequestParam(name = "pageSize", defaultValue = "10") int pageSize,
@RequestParam String keyword) {
return new ResultBean<>(userService.listUsersByPage(page, pageSize,keyword));
}
/**
* 根據id查詢
*/
@RequestMapping(method = RequestMethod.GET, value = "/{id}")
public ResultBean<?> getById(@PathVariable("id") Integer id) {
return new ResultBean<>(userService.getUserById(id));
}
/**
* 新增
*/
@RequestMapping(method = RequestMethod.POST)
public ResultBean<?> insert(@RequestBody User user) {
return new ResultBean<>(userService.insertUser(user));
}
/**
* 刪除
*/
@RequestMapping(method = RequestMethod.DELETE, value = "/{id}")
public ResultBean<?> deleteById(@PathVariable("id") Integer id) {
return new ResultBean<>(userService.deleteUserById(id));
}
/**
* 修改
*/
@RequestMapping(method = RequestMethod.PUT)
public ResultBean<?> updateById(@RequestBody User user) {
return new ResultBean<>(userService.updateUser(user));
}
}
2.Service模板程式碼示例
package cn.hellochaos.generator.service;
import cn.hellochaos.generator.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
/**
* <p>
* 使用者 服務類
* </p>
*
* @author chaos
* @since 2020-05-02
*/
public interface UserService {
/**
* 分頁查詢User
*
* @param page 當前頁數
* @param pageSize 頁的大小
* @param keyword 搜尋關鍵詞
* @return 返回mybatis-plus的Page物件,其中records欄位為符合條件的查詢結果
* @author chaos
* @since 2020-05-02
*/
Page<User> listUsersByPage(int page, int pageSize, String keyword);
/**
* 根據id查詢User
*
* @param id 需要查詢的User的id
* @return 返回對應id的User物件
* @author chaos
* @since 2020-05-02
*/
User getUserById(int id);
/**
* 插入User
*
* @param user 需要插入的User物件
* @return 返回插入成功之後User物件的id
* @author chaos
* @since 2020-05-02
*/
int insertUser(User user);
/**
* 根據id刪除User
*
* @param id 需要刪除的User物件的id
* @return 返回被刪除的User物件的id
* @author chaos
* @since 2020-05-02
*/
int deleteUserById(int id);
/**
* 根據id更新User
*
* @param user 需要更新的User物件
* @return 返回被更新的User物件的id
* @author chaos
* @since 2020-05-02
*/
int updateUser(User user);
}
3.ServiceImpl模板程式碼示例
package cn.hellochaos.generator.service.impl;
import cn.hellochaos.generator.entity.User;
import cn.hellochaos.generator.mapper.UserMapper;
import cn.hellochaos.generator.service.UserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;
import cn.hellochaos.generator.exception.bizException.BizException;
/**
* <p>
* 使用者 服務實現類
* </p>
*
* @author chaos
* @since 2020-05-02
*/
@Slf4j
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
@Override
public Page<User> listUsersByPage(int page, int pageSize, String keyword) {
log.info("正在執行分頁查詢user: page = {} pageSize = {} keyword = {}",page,pageSize,keyword);
QueryWrapper<User> queryWrapper = new QueryWrapper<User>().like("", keyword);
//TODO 這裡需要自定義用於匹配的欄位,並把wrapper傳入下面的page方法
Page<User> result = super.page(new Page<>(page, pageSize));
log.info("分頁查詢user完畢: 結果數 = {} ",result.getRecords().size());
return result;
}
@Override
public User getUserById(int id) {
log.info("正在查詢user中id為{}的資料",id);
User user = super.getById(id);
log.info("查詢id為{}的user{}",id,(null == user?"無結果":"成功"));
return user;
}
@Override
public int insertUser(User user) {
log.info("正在插入user");
if (super.save(user)) {
log.info("插入user成功,id為{}",user.getUserId());
return user.getUserId();
} else {
log.error("插入user失敗");
throw new BizException("新增失敗");
}
}
@Override
public int deleteUserById(int id) {
log.info("正在刪除id為{}的user",id);
if (super.removeById(id)) {
log.info("刪除id為{}的user成功",id);
return id;
} else {
log.error("刪除id為{}的user失敗",id);
throw new BizException("刪除失敗[id=" + id + "]");
}
}
@Override
public int updateUser(User user) {
log.info("正在更新id為{}的user",user.getUserId());
if (super.updateById(user)) {
log.info("更新d為{}的user成功",user.getUserId());
return user.getUserId();
} else {
log.error("更新id為{}的user失敗",user.getUserId());
throw new BizException("更新失敗[id=" + user.getUserId() + "]");
}
}
}