业务接口实现类模版
import com.alibaba.fastjson.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Service; /** * $table_desc$业务实现 * Created by 创建人 on $current_time$ */ @Service public class $table_name_hump_A$ServiceImpl implements $table_name_hump_A$Service { private static final Logger LOGGER = LoggerFactory.getLogger($table_name_hump_A$ServiceImpl.class); @Resource private $table_name_hump_A$DAO $table_name_hump$DAO; @Override public CommonResult create(JSONObject request) { // 入参转成对应类型 CommonAssert.isNoEmptyObj(request, "请求参数不可空"); $table_name_hump_A$DTO dto = JSON.toJavaObject(request, $table_name_hump_A$DTO.class); // 参数校验 $biz_check_required_params$ // 转成do模型 $table_name_hump_A$DO dataDo = $table_name_hump_A$Converter.toDo(dto); // 落库 int count = $table_name_hump$DAO.insert(dataDo); CommonAssert.isTrue(count > 0, "创建失败,请重试"); // 返回创建成功的ID数据 return new CommonResult(dataDo.get$primary_key_hump_A$()); } @Override public CommonResult modify(JSONObject request) { // 入参转成对应类型 CommonAssert.isNoEmptyObj(request, "请求参数不可空"); $table_name_hump_A$DTO dto = JSON.toJavaObject(request, $table_name_hump_A$DTO.class); // 参数校验 $biz_check_required_params$ // 转成do模型 $table_name_hump_A$DO dataDo = $table_name_hump_A$Converter.toDo(dto); // 落库 int count = $table_name_hump$DAO.update(dataDo); CommonAssert.greaterThanZero(count, "修改失败,请重试"); // 返回修改成功的ID数据 return new CommonResult(dataDo.get$primary_key_hump_A$()); } @Override public CommonResult pageQuery(JSONObject request) { // 入参基本校验 CommonAssert.isNoEmptyObj(request, "请求参数不可空"); // 分页信息校验 PaginationDO pagination = PaginationDO.setRequestOffsetAndRows(request); CommonAssert.isNoEmptyObj(pagination, "分页参数 $pageIndex、$pageSize 不可空"); CommonAssert.isTrue(pagination.getPageSize() <= 100, "单次查询条数不可超过100条"); // 取分页列表数据 List<$table_name_hump_A$DO> dbResult = $table_name_hump$DAO.pageQuery(request); // 取count数据 long count = $table_name_hump$DAO.pageQueryCount(request); // 空返回 if (CollectionUtils.isEmpty(dbResult)){ return new CommonResult(new PaginationResult(null, request, count)); } // 模型转换 List<$table_name_hump_A$DTO> list = $table_name_hump_A$Converter.toDtoList(dbResult); // 返回分页结果 return new CommonResult(new PaginationResult(list, request, count)); } @Override public CommonResult queryById(JSONObject request) { // 取入参 CommonAssert.isNoEmptyObj(request, "请求参数不可空"); // 根据ID获取数据 $primary_key_type_java$ $primary_key_hump$ = request.get$primary_key_type_java$("$primary_key_hump$"); CommonAssert.isNoEmptyObj($primary_key_hump$, "参数错误,无法执行查询"); $table_name_hump_A$DO dbResult = $table_name_hump$DAO.queryById($primary_key_hump$); // 未查询到结果,返回 if (null == dbResult){ return new CommonResult(); } // 模型转换 $table_name_hump_A$DTO result = $table_name_hump_A$Converter.toDto(dbResult); // 返回结果对象 return new CommonResult(result); } }
成员代码块 必填项业务校验(biz_check_required_params)
CommonAssert.$java_type_adapter_assert_method$(dto.get$field_name_hump_A$(), "$field_comment$不可空");
Controller模版
import com.alibaba.fastjson.JSONObject; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; /** * $table_desc$HTTP请求控制器 * Created by 创建人 on $current_time$. */ @CrossOrigin @RestController @RequestMapping(value = "/$table_name_hump$/") public class $table_name_hump_A$Controller { private static final Logger LOGGER = LoggerFactory.getLogger($table_name_hump_A$Controller.class); @Resource private $table_name_hump_A$Service $table_name_hump$Service; /** * 创建 * @param request * @return */ @RequestMapping(value = "create.json", method = {RequestMethod.GET, RequestMethod.POST}) @ResponseBody public Object create(@RequestBody JSONObject request){ return CommonTemplate.run(LOGGER, new CommonTemplate() { @Override protected Object business() { return $table_name_hump$Service.create(request); } }, request); } /** * 修改 * @param request * @return */ @RequestMapping(value = "modify.json", method = {RequestMethod.GET, RequestMethod.POST}) @ResponseBody public Object modify(@RequestBody JSONObject request){ return CommonTemplate.run(LOGGER, new CommonTemplate() { @Override protected Object business() { return $table_name_hump$Service.modify(request); } }, request); } /** * 分页查询 * @param request * @return */ @RequestMapping(value = "pageQuery.json", method = {RequestMethod.GET, RequestMethod.POST}) @ResponseBody public Object pageQuery(@RequestBody JSONObject request){ return CommonTemplate.run(LOGGER, new CommonTemplate() { @Override protected Object business() { return $table_name_hump$Service.pageQuery(request); } }, request); } /** * 通过主键查询 * @param request * @return */ @RequestMapping(value = "queryById.json", method = {RequestMethod.GET, RequestMethod.POST}) @ResponseBody public Object queryById(@RequestBody JSONObject request){ return CommonTemplate.run(LOGGER, new CommonTemplate() { @Override protected Object business() { return $table_name_hump$Service.queryById(request); } }, request); } }
动态参数
原始表名 $table_name$
❝
用户输入的表名,不做任何处理。
❞
表名驼峰首字母小写 $table_name_hump$
❝
用户输入的表名,经过驼峰处理。例如输入:goods_order ,输出:goodsOrder
❞
表名驼峰首字母大写 $table_name_hump_A$
❝
用户输入的表名,经过驼峰处理。例如输入:goods_order ,输出:GoodsOrder
❞
原始字段名 $field_name$
❝
用户输入的表字段名,不做任何处理。
❞
字段名驼峰首字母小写 $field_name_hump$
❝
用户输入的表字段名,经过驼峰处理。例如输入:order_number ,输出:orderNumber
❞
字段名驼峰首字母大写 $field_name_hump_A$
❝
用户输入的表字段名,经过驼峰处理。例如输入:order_number ,输出:OrderNumber
❞
字段说明 $field_comment$
❝
用户输入的表字段说明,不做任何处理。
❞
字段数据类型(对应DB)$field_type_db$
❝
用户选择的表字段类型,不做任何处理。
❞
字段数据类型(对应Java)$field_type_java$
❝
用户选择的表字段类型,会自动匹配对应的Java类型。例如输入:VARCHAR(),输出:String
❞
主键字段名 $primary_key$
❝
用户选择的主键字段,不做任何处理。例如用户定义的主键是id,那么输出就是:id
❞
主键字段名驼峰首字母小写 $primary_key_hump$
❝
用户选择的主键字段,经过驼峰处理。例如输入:order_number ,输出:orderNumber
❞
主键字段名驼峰首字母大写 $primary_key_hump_A$
❝
用户选择的主键字段,经过驼峰处理。例如输入:order_number ,输出:OrderNumber
❞
主键字段数据类型(对应Java)$primary_key_type_java$
❝
用户选择的主键字段类型,会自动匹配对应的Java类型。例如输入:VARCHAR(),输出:String
❞
插入数据sql,字段名列表 $insert_field_name_list$
❝
例如表中有三个字段:id(主键)、goods_name、price,输出:goods_name,price 。会自动排除主键 不仅插入数据时可用,任何需要排除ID,然后使用英文逗号拼接表所有字段信息的地方,都可以使用它
❞
插入数据sql,字段值列表 $insert_field_value_list$
❝
例如表中有三个字段:id(主键)、goods_name、price,输出:#{goodsName},#{price} 。会自动排除主键 不仅插入数据时可用,任何需要排除ID,然后使用英文逗号拼接表所有字段信息的地方,都可以使用它
❞
修改数据sql,字段名列表 $update_field_list$
❝
例如表中有三个字段:id(主键)、goods_name、price 输出(会自动换行,会携带以下缩进,会自动排除主键):
❞
goods_name = #{goodsName}, price = #{price}
查询数据sql,字段名列表 $select_field_list$
❝
例如表中有三个字段:id(主键)、goods_name、price,输出:id,goods_name,price 。带主键
❞
whele字段条件sql,字段名列表 $whele_field_list$
❝
例如表中有三个字段:id(主键)、goods_name、price, 输出(会自动换行,会携带以下缩进):
❞
<if test="id != null"> AND id = #{id} </if> <if test="goodsName != null"> AND goods_name = #{goodsName} </if> <if test="price != null"> AND price = #{price} </if>
创建表-表字段列表 $create_table_field_list$
❝
例如表中有三个字段:id(自增主键)、goods_name、price 输出(会自动换行,会携带以下缩进):
❞
`id` INT(11) NOT NULL AUTO_INCREMENT, `goods_name` VARCHAR(128) NOT NULL DEFAULT 'NULL', `price` DECIMAL(10,2) NOT NULL DEFAULT 'NULL'
当前时间 $current_time$
❝
自动获取当前时间,格式:yyyy-MM-DD hh:mm:ss,示例值:2023-02-05 17:31:18
❞
自动根据数据类型,匹配断言方法 $java_type_adapter_assert_method$
❝
对于Java数据类型等于String的字段,使用isNoBlankStr方法,其他的类型都使用isNoEmptyObj方法 这是一个定制化很高的动态参数,可忽略它。
❞
动态代码块
动态代码块由用户自行定义,代码块中也可以设置动态参数,目前仅提供4种明确的动态代码块
成员变量列表 $member_param_list$
例如表中有三个字段:id(主键)、goods_name、price
假设用户定义了如下代码块内容:
/** $field_comment$ */ private $field_type_java$ $field_name_hump$;
输出(会自动根据字段数量,累加输出自定义代码块内容):
/** id */ private Integer id; /** 商品名称 */ private String goodsName; /** 商品价格 */ private String price;
GetSet方法列表 $get_set_method_list$
例如表中有三个字段:id(主键)、goods_name、price
假设用户定义了如下代码块内容:
public $field_type_java$ get$field_name_hump_A$() { return $field_name_hump$; } public void set$field_name_hump_A$($field_type_java$ $field_name_hump$) { this.$field_name_hump$ = $field_name_hump$; }
输出(会自动根据字段数量,累加输出自定义代码块内容):
public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getGoodsName() { return goodsName; } public void setGoodsName(String goodsName) { this.goodsName = goodsName; } public String getPrice() { return price; } public void setPrice(String price) { this.price = price; }
模型转换器参数列表 $converter_source_to_target_params_list$
例如表中有三个字段:id(主键)、goods_name、price
假设用户定义了如下代码块内容:
target.set$field_name_hump_A$(source.get$field_name_hump_A$());
输出(会自动根据字段数量,累加输出自定义代码块内容):
target.setId(source.getId()); target.setGoodsName(source.getGoodsName()); target.setPrice(source.getPrice());
必填项业务校验 $biz_check_required_params$
例如表中有三个字段:id(主键)、goods_name、price
假设用户定义了如下代码块内容:
CommonAssert.$java_type_adapter_assert_method$(dto.get$field_name_hump_A$(), "$field_comment$不可空");
输出(会自动根据字段数量,累加输出自定义代码块内容):
CommonAssert.isNoBlankStr(dto.getGoodsName(), "goodsName不可空"); CommonAssert.isNoBlankStr(dto.getPrice(), "price不可空");
以上思路希望大家都能喜欢,如有更好想法,欢迎评论区交流起来!