{"repo":"Levin-Li/simple-dao","free":true,"listed":false,"github":"https://github.com/Levin-Li/simple-dao","clone":"git clone https://github.com/Levin-Li/simple-dao.git","description":"基于Java注解的JPA / SQL 增强DAO，让项目不写或少写 JPA / SQL 语句。已经在公司内部项目中大量使用，大家放心使用。","language":"Java","stars":11,"topics":["dao","jpa","hibernate","orm","jdbc","mybatis","mybatis-plus","spring-boot","dto","java"],"license":null,"category":"databases-storage","readme_excerpt":"简介 SimpleDao是一个使用注解生成SQL语句和参数的Dao组件，通过在DTO对象中加入自定义注解自动生成查询语句。 在项目中应用本组件能大量减少SQL语句的编写和参数的处理。组件支持Where子句、标量统计函数和Group By子句、Having子句、Order By子句、Select子句、Update Set子句、子查询、逻辑删除，安全模式等。 目前组件基于JPA/Hibernate，如果非JPA环境，可以使用 genFinalStatement()、 genFinalParamList() 方法以来获取SQL语句和参数。 说重点，组件的Maven插件可以双击生成代码哦。 组件逻辑架构如下图： 1 使用预览 实体类 //1、学生表 @Entity(name = \"student\") @Data @Accessors(chain = true) @FieldNameConstants public class Student{ @Id @GeneratedValue private Long id; //学生姓名 String name; ... } //2、考试成绩表 @Entity(name = \"exam log\") @Data @Accessors(chain = true) @FieldNameConstants public class ExamLog{ @Id @GeneratedValue private Long id; //学生ID Long studentId; //学科 String subject; //成绩分数 Integer score; ... } 需求： 查询并统计出语数英三科考试中总分超过260分，学科平均分高于80分，学生姓名中包含特定字符的学生姓名、总分、平均分。 解决方案： 1）定义查询对象（表连接） 数据传输对象(兼查询对象，通过注解产生SQL语句) @Data @TargetOption( entityClass =ExamLog.class , / 目标类 / alias = E ExamLog.ALIAS, // 主表别名 resultClass = ExamStatDto.class, / 结果类 / //表连接 joinOptions = { @JoinOption(entityClass = Student.class, alias = E Student.ALIAS, joinTargetColumn = E ExamLog.studentId ) //连接的表 //可以再连接表2 } ) public class ExamStatDto { @Sum(having=Op.Gt) Long sumScore = 260L; @Avg(having=Op.Gt) Long avgScore = 80L; //当avgScore字段名在实体对象中不存在时，会尝试自动去除注解的名字 avgScore - score @In String[] subject = {\"语文\", \"数学\", \"英语\"}; @Contains(domain = E Student.ALIAS) // 过滤出学生名字中包含'李'字 @GroupBy(domain = E Student.ALIAS) // 按名字分组 String name = \"李\"; } 以上Dto等效的SQL语句如下： Select s.name , Avg(e.score) , Sum(e.score) From exam log e L","default_branch":null,"files":null,"tree":[],"storefront":"/r/Levin-Li","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/Levin-Li/simple-dao/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}