ITPub博客

首页 > 应用开发 > > Java 后端常用代码封装库 syj-minicode

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

作者:zhjjj 时间:2019-10-15 09:40:31 0 删除 编辑

项目介绍

此项目把Java后端最常用的代码全都抽象出来,一经使用即可减少开发者80%的工作量,使大家把所有的精力解放到业务代码中。


为什么选择syj-minicode

你是否懒得写普通的增删改查方法?

你是否不喜欢代码生成插件的重复代码?

你是否渴望一个没有冗余代码的项目?

你是否渴望一行代码都不用写就能完成一个简单的模块?

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

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

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

根据主键查询对象

@RequestMapping(value = "/syj-api/{entityName}/{id}", method = RequestMethod.GET)

分页查询

@RequestMapping(value = "/syj-api/{entityName}/page", method = RequestMethod.POST)

@RequestBody: GridPageRequest

这里的GridPageRequest为分页查询的条件,看一下它的组成元素

/**

* 查询关键字Map

*/

private Map searchMap;

/**

* 模糊查询关键字Map

*/

private Map likeSearchMap;

/**

* 排序关键字Map

*/

private Map orderMap;

/**

* 分组关键字数组

*/

private String[] groupArray;

/**

* 第几页

*/

private Integer pageNum;

/**

* 查几条

*/

private Integer pageSize;

/**

* 大于等于查询关键字Map

*/

private Map largeSearchMap;

/**

* 小于等于查询关键字Map

*/

private Map smallSearchMap;

/**

* 不等于查询关键字Map

*/

private Map notEquleSearchMap;

前端查询时只需要按照查询条件组装GridPageRequest对象就可以了

插入

@RequestMapping(value = "/syj-api/{entityName}/insert", method = RequestMethod.POST)

@RequestBody: Object(待插入对象)

根据主键进行更新

@RequestMapping(value = "/syj-api/{entityName}/update", method = RequestMethod.PUT)

@RequestBody: Object(待更新对象)

根据主键进行删除

@RequestMapping(value = "/syj-api/{entityName}/{id}", method = RequestMethod.DELETE)

批量删除

@RequestMapping(value = "/syj-api/{entityName}/deleteByIds", method = RequestMethod.DELETE)

@RequestBody: List ids(待删除主键列表)

扩展接口

因为默认情况下单个对象查询、修改、删除所依据的主键的字段名使用的都是"id",但是很可能有的项目使用的是userId、orderId、roleId等主键,如果你的项目符合这个条件注入下方这个bean。

@Bean

public IdField idField() {

Map map=new ConcurrentHashMap ();

map.put("user","userId");

map.put("order","orderId");

map.put("role","roleId");

IdField idField=new IdField();

idField.setMap(map);

return idField;

}

有的项目在进行插入和更新时会加入创建人和修改人等信息,查询时可能会忽略某些字段不想让某些字段传递给前端,如果有此需求请按照如下方式调用

插入扩展 创建一个名为InsertExtend的bean并实现DefaultExtend接口

@Component

public class InsertExtend implements ExtendInterface{

@Override

public Map exectue() {

Map map=new HashMap ();

map.put("createTime", System.currentTimeMillis());

map.put("createBy", "创建人id");

map.put("createUserName", "创建人名称");

return map;

}

}

更新扩展 创建一个名为UpdateExtend的bean并实现DefaultExtend接口

@Component

public class UpdateExtend implements ExtendInterface{

@Override

public Map exectue() {

Map map=new HashMap ();

map.put("updateTime", System.currentTimeMillis());

map.put("updateBy", "修改人id");

map.put("updateUserName", "修改人名称");

return map;

}

}

查询扩展 创建一个名为SelectExtend的bean并实现DefaultExtend接口

@Component

public class SelectExtend implements ExtendInterface{

@Override

public Map exectue() {

Map 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中调用

初始化

private BaseService getUserBaseService(){

return ServiceBeanFactory.getBean("User");

}

根据id查询

Map userMap=getUserBaseService().selectOneById("115");

User user=(User) BeanMapUtil.mapToBean(map,User.class);

根据条件查询列表(相信你已经知道了gridPageRequest对象如何组装)

List> userMaps=getUserBaseService().selectBySelective(gridPageRequest);

for (Map map:userMaps){

User user=(User) BeanMapUtil.mapToBean(map,User.class);

}

插入

getUserBaseService().insertSelective(user);

更新

getUserBaseService().updateByIdSelective(user);

删除

getUserBaseService().deleteById("115");

批量删除

List list=new ArrayList ();

list.add("115");

list.add("116");

list.add("117");

getUserBaseService().deleteByIds(list);

自定义查询sql

getUserBaseService().selectBySelective("select * from user");

Quick Start

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

引入syj-minicode

cn.org.zhixiang

syj-minicode

请使用以maven中央仓库的最新版本为准

注册syj-minicode

因为并不是所有的项目都会使用SpringBoot,所以在注册这一步我们分为两种情况

SpringBoot或SpringCloud项目 你需要在启动类上增加一个注解

@EnableSyjMiniCode

Spring

你需要提供一个可以被Spring管理的配置类。比如说:

@Import(EnableSyjMiniCodeConfiguration.class)

@Configuration

public class SyjMiniCodeConfig {

}

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/717/viewspace-3150937/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-12

  • 博文量
    231
  • 访问量
    1889