您的位置 首页 java

Java 后端常用代码封装库 syj-minicode

项目介绍

Java 后端常用代码封装库 syj-minicode

为什么选择syj-minicode

  1. 你是否懒得写普通的增删改查方法?
  2. 你是否不喜欢代码生成插件的重复代码?
  3. 你是否渴望一个没有冗余代码的项目?
  4. 你是否渴望一行代码都不用写就能完成一个简单的模块?

如何不写代码就完成一个简单的模块

当一些单表的增删改查时你只需要告诉前端来调用这几个接口就行了

下方出现的entityName为当前操作的对象名称或者数据库表名称(注意命名规范要符合驼峰命名法,例如:UserOrder或者user_order都可以) 删除接口为物理删除,逻辑删除请使用update接口

  1. 根据 主键 查询对象
 @RequestMapping(value = "/syj-api/{entityName}/{id}", method = RequestMethod.GET)
 
  1. 分页查询
@RequestMapping(value = "/syj-api/{entityName}/page", method = RequestMethod.POST)
@RequestBody: GridPageRequest
 
  1. 这里的GridPageRequest为分页查询的条件,看一下它的组成元素
 /**
 * 查询关键字Map
 */
 private Map<String, String> searchMap;
 /**
 * 模糊查询关键字Map
 */
 private Map<String, String> likeSearchMap;
 /**
 * 排序关键字Map
 */
 private Map<String, String> orderMap;
 /**
 * 分组关键字数组
 */
 private String[] groupArray;
 /**
 * 第几页
 */
 private Integer pageNum;
 /**
 * 查几条
 */
 private Integer pageSize;
 /**
 * 大于等于查询关键字Map
 */
 private Map<String, String> largeSearchMap;
 /**
 * 小于等于查询关键字Map
 */
 private Map<String, String> smallSearchMap;
 /**
 * 不等于查询关键字Map
 */
 private Map<String, String> notEquleSearchMap;
 
  1. 前端查询时只需要按照查询条件组装GridPageRequest对象就可以了
  2. 插入
@RequestMapping(value = "/syj-api/{entityName}/insert", method = RequestMethod.POST)
@RequestBody: Object(待插入对象)
 
  1. 根据主键进行更新
@RequestMapping(value = "/syj-api/{entityName}/update", method = RequestMethod.PUT)
@RequestBody: Object(待更新对象)
 
  1. 根据主键进行删除
@RequestMapping(value = "/syj-api/{entityName}/{id}", method = RequestMethod.DELETE)
 
  1. 批量删除
@RequestMapping(value = "/syj-api/{entityName}/deleteByIds", method = RequestMethod.DELETE)
@RequestBody: List<String> ids(待删除主键列表)
 

扩展接口

  1. 因为默认情况下单个对象查询、修改、删除所依据的主键的字段名使用的都是”id”,但是很可能有的项目使用的是userId、orderId、roleId等主键,如果你的项目符合这个条件注入下方这个bean。
 @Bean
 public IdField idField() {
 Map<String,String> map=new ConcurrentHashMap<>();
 map.put("user","userId");
 map.put("order","orderId");
 map.put("role","roleId");
 IdField idField=new IdField();
 idField.setMap(map);
 return idField;
 } 
 
  1. 有的项目在进行插入和更新时会加入创建人和修改人等信息,查询时可能会忽略某些字段不想让某些字段传递给前端,如果有此需求请按照如下方式调用
  2. 插入扩展 创建一个名为InsertExtend的bean并实现DefaultExtend接口
@ Component 
public class InsertExtend implements ExtendInterface{
 @ Override 
 public Map<String, String> exectue() {
 Map<String, String> map=new HashMap<>();
 map.put("createTime", System.currentTimeMillis());
 map.put("createBy", "创建人id");
 map.put("createUserName", "创建人名称");
 return map;
 }
}
 
  1. 更新扩展 创建一个名为UpdateExtend的bean并实现DefaultExtend接口
 @Component
 public class UpdateExtend implements ExtendInterface{
 @Override
 public Map<String, String> exectue() {
 Map<String, String> map=new HashMap<>();
 map.put("updateTime", System.currentTimeMillis());
 map.put("updateBy", "修改人id");
 map.put("updateUserName", "修改人名称");
 return map;
 }
 }
 
  1. 查询扩展 创建一个名为SelectExtend的bean并实现DefaultExtend接口
 @Component
 public class SelectExtend implements ExtendInterface{
 @Override
 public Map<String, String> exectue() {
 Map<String, String> map=new HashMap<>();
 map.put("user", "id, user_name as userName, pass as passWord");
 map.put("merchant_user", "create_user as createUser, update_by as updateUser");
 return map;
 }
 }
 

还有没有更灵活的使用方式?

上方使用方式其实是直接抽象到了controller层,解决一般的需要是没问题的,但是我们是有业务逻辑的,那么存在业务逻辑的情况下如何使用呢? 你可以在处理完业务逻辑后在service中调用

  1. 初始化
private BaseService getUserBaseService(){
 return ServiceBeanFactory.getBean("User");
 }
 
  1. 根据id查询
Map<String,Object> userMap=getUserBaseService().selectOneById("115");
User user=(User) BeanMapUtil.mapToBean(map,User.class);
 
  1. 根据条件查询列表(相信你已经知道了gridPageRequest对象如何组装)
List<Map<String, Object>> userMaps=getUserBaseService().selectBySelective(gridPageRequest);
for (Map<String, Object> map:userMaps){
 User user=(User) BeanMapUtil.mapToBean(map,User.class); 
}
 
  1. 插入
getUserBaseService().insertSelective(user);
 
  1. 更新
getUserBaseService().updateByIdSelective(user);
 
  1. 删除
getUserBaseService().deleteById("115");
 
  1. 批量删除
List<String> list=new ArrayList<>();
list.add("115");
list.add("116");
list.add("117");
getUserBaseService().deleteByIds(list);
 
  1. 自定义查询sql
getUserBaseService().selectBySelective("select * from user");
 

Quick Start

相信看了上方的介绍你已经迫不及待的想要使用了,那么使用起来简单么?看一下你就知道。

  1. 引入syj-minicode
<dependency>
 <groupId>cn.org.zhixiang</groupId>
 <artifactId>syj-minicode</artifactId>
 <version>请使用以maven中央仓库的最新版本为准</version>
 </dependency>
 
  1. 注册syj-minicode
  2. 因为并不是所有的项目都会使用SpringBoot,所以在注册这一步我们分为两种情况
  3. SpringBoot或SpringCloud项目 你需要在启动类上增加一个注解
@EnableSyjMiniCode
 
  1. Spring
  2. 你需要提供一个可以被Spring管理的配置类。比如说:
@Import(EnableSyjMiniCodeConfiguration.class)
@Configuration
public class SyjMiniCodeConfig {
}
 

文章来源:智云一二三科技

文章标题:Java 后端常用代码封装库 syj-minicode

文章地址:https://www.zhihuclub.com/192296.shtml

关于作者: 智云科技

热门文章

网站地图