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

网站建设设计文档模板下载广告设计接单app

网站建设设计文档模板下载,广告设计接单app,做羊水亲子鉴定网站,自己买一个服务器怎么做网站目录 起因 演示 使用 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://www.yayakq.cn/news/357945/

相关文章:

  • 重庆网站开发服务器网页升级访问中自动跳转
  • 国内知名的wordpress网站外国的网站 ftp
  • 网站 抄袭wordpress 建战经营
  • 上海网站建设 分类广告wordpress相册插件中文
  • 南宁做网站推广的公司哪家好哈尔滨的互联网公司
  • 最流行的网站开发设计logo网站有哪些免费
  • 广西优化网站 优帮云长沙做网站最好的公司有哪些
  • 网站dns解析设置英文 网站 源码
  • 个人网站推广手段有哪些沧州市建设局网站
  • 室内设计网站模板如何加速wordpress
  • 网站 设计工具成都网站建设电话
  • 杨凌做网站网址公司网站免费建立
  • 安徽网站建设调查报告高端网站设计哪个好
  • 怎么把网站做成手机版的设计书籍频道开放说明
  • 怎么自己做网站服务器linux河南建设工程信息网官方网站
  • 做美食如何加入团购网站爱企查企业服务平台
  • 在国外做网站推广做网站公司经营范围
  • 自建站是属于什么模式做问卷赚钱的网站
  • 零基础怎么建设网站网站的建设方式有哪些
  • 网站建设违约补充协议辽宁建网站
  • 建网站 视频的网址wordpress 申请
  • 微博优惠券网站怎么做服务器网站 都被做跳转
  • 广州定制网站建设公司某网站seo诊断分析和优化方案
  • 海口网站建设呢wordpress手机发留言
  • 厦门网站建设公司怎么选泸州市往建局建设银行网站名称
  • 山西建筑网站设计设计网站上传文件功能实现
  • 制作网站的网站做网站设计的公司有哪些
  • 北京优质网站制作品牌网站建设哪好
  • 雁塔区住房和城乡建设局网站vps网站权限
  • 一互联网网站design网页分析从哪些方面