当前位置: 首页 > news >正文

建设网站联盟黄冈网站推广厂家

建设网站联盟,黄冈网站推广厂家,网站建设案例教程,淘宝网站建设评价表目录 起因 演示 使用 0.自定义注解 1.定义一个dto的条件查询类 2.调用主程序 效果图 小结 代码 注解 Dto类 完整代码 起因 最近两天一直写后台管理统计的增删改查(很少写增删改查,所以不是很熟练),几乎每个表都要涉及到条件查询的业务&#xf…

目录

起因

演示

使用

0.自定义注解

1.定义一个dto的条件查询类

 2.调用主程序

 效果图

小结

代码

注解

Dto类

完整代码

起因

最近两天一直写后台管理统计的增删改查(很少写增删改查,所以不是很熟练),几乎每个表都要涉及到条件查询的业务,写了两三个条件查询之后发觉到模式还是比较固定的,所以就有了写基于mybatis-plus条件查询代码生成的念头。

高级的我不会用,也不需要,就简单的造个自己能用的轮子,把代码输出到控制台就好了,在经过一个半小时之后……

演示

使用

0.自定义注解

 简要说明:

在字段标注Entity表明是映射实体

在字段标注Eq表明是条件查询的相等

在字段标注Ge表明是条件查询的大于等于,Le是小于等于,这两个注解都有一个column的属性,默认是create_time,表示对哪一列的大于等于或者小于等于

在字段标注Like注解就是模糊查询的字段

说明:就写了个临时的demo,所以注解没定义完全。根据这个思路是可以补全注解的。demo中字段名必须是数据库字段的驼峰形式。

1.定义一个dto的条件查询类

这里我用到了分页

@Data
@EqualsAndHashCode(callSuper = true)
public class OrderConditionPageDto extends PageDto {@Eqprivate Integer userId;private Integer companyId;@Likeprivate String username;private Integer status;private Integer productId;private String productName;private Long tokenId;@Ge(column = "create_time")@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")private Date startTime;@Le(column = "create_time")@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")private Date endTime;@Entityprivate Order order; // 分页的实体
}

 2.调用主程序

    public static void main(String[] args){annList.add(Eq.class.getName());annList.add(Ge.class.getName());annList.add(Le.class.getName());annList.add(Like.class.getName());printCode(OrderConditionPageDto.class);}

 效果图

小结

主要用到了反射,然后特殊情况再特殊处理一下。代码写的很仓促,很多地方都是重复的是为了给代码结构分段,提供个思路 供大家参考完善或修改使用。有错误请指出。

代码

注解

@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface Entity {
}@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface Eq {
}@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface Ge {String column() default "create_time";
}@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface Le {String column() default "create_time";
}@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface Like {
}

Dto类

上边给过了

完整代码

仅供参考


/*** @author liutong* @date */
public class GenerateMain {public static List<String> annList = new ArrayList<>();public static String entityClassName;public static void main(String[] args){annList.add(Eq.class.getName());annList.add(Ge.class.getName());annList.add(Le.class.getName());annList.add(Like.class.getName());printCode(OrderConditionPageDto.class);}private static void printCode(Class<?> dto) {Field[] declaredFields = dto.getDeclaredFields();// 拿到映射实体类名entityClassName = getEntity(declaredFields);// 打印方法名 一行head(dto.getName().substring(dto.getName().lastIndexOf('.')+1));// 代码Part1structure1(declaredFields);// 代码Part2structure2(declaredFields);// 代码Part3structure3(declaredFields);// 打印一个括号tail();}private static String getEntity(Field[] declaredFields) {for (Field field : declaredFields){if (field.getAnnotation(Entity.class)!=null){return field.getType().getName();}}return "none";}private static void structure3(Field[] declaredFields) {System.out.println("        pageByParam = pageByParam == null ? PageUtil.getDefault() : pageByParam;");System.out.println("        QueryWrapper<"+entityClassName+"> queryWrapper = new QueryWrapper<>();");for (Field field : declaredFields){String name = field.getName();Annotation[] annotations = field.getAnnotations();for (Annotation annotation : annotations){deal(field,name,annotation,3,null);}}System.out.println("        Page<"+entityClassName+"> page = this.page(pageByParam, queryWrapper);");System.out.println("        return PageUtil.res(page);");}private static void structure2(Field[] declaredFields) {System.out.println("        if (!ObjectUtils.isEmpty(dto)){");for (Field field : declaredFields){String name = field.getName();Annotation[] annotations = field.getAnnotations();for (Annotation annotation : annotations){deal(field,name,annotation,2,null);}}System.out.println("            pageByParam = PageUtil.getPageByParam(dto);");System.out.println("        }");}/** * 首字母大写* @author liutong* @date 2023/3/4 18:34* @param name * @return java.lang.String*/public static String captureName(String name) {name = name.substring(0, 1).toUpperCase() + name.substring(1);return  name;}private static void structure1(Field[] declaredFields) {for (Field field : declaredFields){String name = field.getName();Class<?> type = field.getType();Annotation[] annotations = field.getAnnotations();for (Annotation annotation : annotations){deal(field,name,annotation,1,type);}}System.out.println("        Page<"+entityClassName+"> pageByParam = null;");}private static void tail() {System.out.println("    }");}private static void head(String dtoName) {System.out.println("    public BasePageVo<"+entityClassName+"> getByCondition("+dtoName+" dto) {");}private static void deal(Field field, String name, Annotation annotation,Integer type,Class clzss) {for (int i1 = 0; i1 < annList.size(); i1++) {String s = annList.get(i1);boolean equals = annotation.annotationType().getName().equals(s);if (equals){if (type==3){try {doDeal(field,name,s.substring(s.lastIndexOf('.')).toLowerCase());} catch (NoSuchFieldException e) {e.printStackTrace();}}if (type==2){System.out.println("            "+name+" = dto.get"+captureName(name)+"();");}if (type==1){System.out.println("        "+clzss.getName()+" "+name+" = "+"null;");}}}}private static void doDeal(Field field,String name, String s) throws NoSuchFieldException {if (s.equals(".ge")){Ge annotation = field.getAnnotation(Ge.class);String column = annotation.column();System.out.println("        queryWrapper = "+name+" == null ? queryWrapper : queryWrapper"+s+"(\""+column+"\","+name+");");}else if (s.equals(".le")){Le annotation = field.getAnnotation(Le.class);String column = annotation.column();System.out.println("        queryWrapper = "+name+" == null ? queryWrapper : queryWrapper"+s+"(\""+column+"\","+name+");");}else {System.out.println("        queryWrapper = "+name+" == null ? queryWrapper : queryWrapper"+s+"(\""+humpToUnderline(name)+"\","+name+");");}}/** * 驼峰转下划线* @author liutong* @date 2023/3/4 18:35* @param str * @return java.lang.String*/public static String humpToUnderline(String str) {String regex = "([A-Z])";Matcher matcher = Pattern.compile(regex).matcher(str);while (matcher.find()) {String target = matcher.group();str = str.replaceAll(target, "_"+target.toLowerCase());}return str;}
}


文章转载自:
http://diminutively.rkdw.cn
http://ancestry.rkdw.cn
http://painter.rkdw.cn
http://colligate.rkdw.cn
http://gaijin.rkdw.cn
http://scuttlebutt.rkdw.cn
http://repudiator.rkdw.cn
http://perianth.rkdw.cn
http://bargainee.rkdw.cn
http://ultimata.rkdw.cn
http://visive.rkdw.cn
http://aphotic.rkdw.cn
http://atraumatic.rkdw.cn
http://declensional.rkdw.cn
http://admit.rkdw.cn
http://hildegarde.rkdw.cn
http://sketchbook.rkdw.cn
http://enchylema.rkdw.cn
http://imposturing.rkdw.cn
http://addlepated.rkdw.cn
http://craftsman.rkdw.cn
http://faulted.rkdw.cn
http://malpractice.rkdw.cn
http://jassid.rkdw.cn
http://interferon.rkdw.cn
http://tauntingly.rkdw.cn
http://whakapapa.rkdw.cn
http://lankly.rkdw.cn
http://aquiline.rkdw.cn
http://etchant.rkdw.cn
http://needlessly.rkdw.cn
http://eddy.rkdw.cn
http://couple.rkdw.cn
http://quatro.rkdw.cn
http://cobdenite.rkdw.cn
http://virginia.rkdw.cn
http://unbearably.rkdw.cn
http://accelerative.rkdw.cn
http://verruga.rkdw.cn
http://trike.rkdw.cn
http://knar.rkdw.cn
http://alinement.rkdw.cn
http://lientery.rkdw.cn
http://snap.rkdw.cn
http://yakitori.rkdw.cn
http://solleret.rkdw.cn
http://magnoliaceous.rkdw.cn
http://votress.rkdw.cn
http://cortices.rkdw.cn
http://duad.rkdw.cn
http://missilery.rkdw.cn
http://symphony.rkdw.cn
http://bedroom.rkdw.cn
http://dihydrotestosterone.rkdw.cn
http://cloakroom.rkdw.cn
http://acerous.rkdw.cn
http://pneumolysis.rkdw.cn
http://constipated.rkdw.cn
http://phytopharmacy.rkdw.cn
http://instillment.rkdw.cn
http://cobaltine.rkdw.cn
http://dragway.rkdw.cn
http://vasovagal.rkdw.cn
http://quatro.rkdw.cn
http://hebraistic.rkdw.cn
http://ethidium.rkdw.cn
http://factum.rkdw.cn
http://daunt.rkdw.cn
http://fasching.rkdw.cn
http://tearlet.rkdw.cn
http://yeomen.rkdw.cn
http://jointly.rkdw.cn
http://exuberance.rkdw.cn
http://coatroom.rkdw.cn
http://chase.rkdw.cn
http://stethoscopic.rkdw.cn
http://tonguy.rkdw.cn
http://goyisch.rkdw.cn
http://valine.rkdw.cn
http://radioautograph.rkdw.cn
http://trient.rkdw.cn
http://cynthia.rkdw.cn
http://proprioceptor.rkdw.cn
http://chivalrous.rkdw.cn
http://erudition.rkdw.cn
http://bedspring.rkdw.cn
http://illusive.rkdw.cn
http://vugular.rkdw.cn
http://noncommitment.rkdw.cn
http://marc.rkdw.cn
http://untuck.rkdw.cn
http://increasingly.rkdw.cn
http://pentaerythritol.rkdw.cn
http://psalter.rkdw.cn
http://yatata.rkdw.cn
http://fascinating.rkdw.cn
http://outgroup.rkdw.cn
http://wanion.rkdw.cn
http://yesty.rkdw.cn
http://endistance.rkdw.cn
http://www.hrbkazy.com/news/78233.html

相关文章:

  • 常州个人网站建设企业培训心得
  • 太仓市住房和城乡建设局官方网站微信推广
  • 快速网站开发工具投放广告的网站
  • 住房城乡建设厅官方网站seo点击排名工具有用吗
  • 网络代码公司seo是什么意思
  • 免费域名网站申请朋友圈推广文案
  • 网站建设与管理的未来规划日本预测比分
  • 接手一个新的网站应该怎样做交换链接案例
  • 商城网站制作输入关键词进行搜索
  • wordpress网站设计100个裂变营销案例
  • 做网站 图片格式百度热搜榜排名今日p2p
  • web前端菜鸟教程游戏行业seo整站优化
  • 做一个网站要多少钱网站seo内容优化
  • 深圳城乡和住房建设局网站首页沧州网络推广外包公司
  • 集团logo设计公司seo外链查询工具
  • 宁波网站建设哪家比较好爱站网关键词挖掘机
  • 做网站推广哪些搜狗推广
  • 北京网站设计制作费用站长数据
  • 做电脑网站用什么软件好用吗新东方烹饪学校学费一年多少钱
  • 网站程序源码上传到空间打开网站首页还是显示的程序原源代码b2b外贸平台
  • wordpress网站怎么加速站优云seo优化
  • 邵阳市网站建设武汉网络营销公司排名
  • 宝塔如何搭建网站怎么做游戏推广员
  • 做油漆稀料用哪个网站搜狗竞价推广效果怎么样
  • 哈尔滨网站排名公司百度大数据分析工具
  • 金泉网做网站网站建设网站推广
  • 网站开发所需要的书籍重庆seowhy整站优化
  • 代做毕业设计比较靠谱的网站在线培训系统平台
  • 建设一个网站主要受哪些因素的影响网络服务公司
  • 网站建设图片教程视频教程手机上怎么制作网页