如何根据动态sql代码sql自动生成列dto

本文为JPA的学习采坑如有问题欢迎指正。

JPA官方推荐的多表关联查询使用不便接触的有些项目可能会使用JPA 做简单查询,Mybaits做复杂查询所以想要寻找一种好用的解决方案。

JPA哆表关联的实现方式



1.映射关系是hibernate的入门基础很多人都会习惯去使用。个人不太喜欢这种方式复用性太弱,且不灵活特别是在多表复杂業务情况下

3.直接使用NativeQuery等方式实现复杂查询个人比较喜欢,直观且便利弊端在于无法返回自定义实体类。需要手动封装工具类来实现Object到目标对象的反射

使用sql并返回自定义实体类


个人比较喜欢的实现方式,不多说看代码


 
 

 
这样一个需求如果使用前两种方式实现无疑会非常麻烦。使用这种方式能够直接反射需要的自定义实体类


可以根据需求整理封装成不同的方法,加入排序分页等。


主要提供一种方便的解决思路有问题欢迎指正

使用springboog+jpa框架因为业务需求不能使鼡封装好的save()方法,故需要在jpa容器里使用@Query注解写sql完成

即sql语句有误各种改,没用后来网上查,大多数说法是jpa的jpql不支持insert into 不经意看到一篇文章里,写的语句后面有一些不一样试之,完美解决所以记录下来: @Query(value = “sql语句”,nativeQuery = true)

这里先要认识并加入一个注解 @Modifying:

jpa容器中使用,当使用@Query寫jpql时如果是删除或修改操作,需要加入此注解进行修饰. 以通知   SpringData 这是一个 UPDATE 或 DELETE 操作 ;默认情况下,是只读所以查询不需要

然后就是@Query寫语句了:

版权声明:本文为博主原创文章,转载请附上博文链接!

封装User实体类对象password未赋值,则在查询配置中对应SQL传递参数值为null


  

if标签:会自动判断对应的属性是否为空,如果为空则从 SQL 去掉对应的条件,否则保留

where标签:会自动判断 where 關键字与紧随其后的条件直接是否存在其他条件,如果存在则保留条件中的 and 关键字,如果不存在则删除条件中的 and 关键字。

where标签:会自動判断 where 关键字与紧随其后的条件直接是否存在其他条件如果存在,则保留条件中的 and 关键字如果不存在,则删除条件中的 and 关键字

set 标签:用于 update 操作,会自动根据参数选择生成 SQL 语句

foreache 标签:可以迭代生成一系列值这个表情主要用于 SQL 的 in 语句。

trim标签:prefix 和 suffix 属性用于生成实际 SQL 语句會和标签内部的语句拼接,如果语句某个部分之前或之后遇到 prefixOverrides 或者 suffixOverrides 属性中指定的值MyBatis 框架会自动将其删除。在指定多个值的时候每个值後面都需要追加一个空格,保证不会和后面的 SQL 连接在一起

我要回帖

更多关于 sql自动生成列 的文章

 

随机推荐