如果前面将的查询方法都不适用,你还有最后一个选择,直接使用原生SQL。
1、Native SQL
这里可以看到,相比JPQL,我们使用表名替换实体类名,使用字段名替换属性名,如果是分页的话,还得提供countQuery,用于统计总数。
2、EntityManager
可以看到EntityManager提供了NativeQuery接口专门来处理原生SQL的情形。
3、JdbcTemplate
先注入JdbcTemplate
注意占位符的使用。使用原生的SQL就麻烦一下,很多对象组装操作都得自己做,当然也可以使用一些现成的工具类,或者自己封装一些工具类,例如上面的代码可以简化成:
因为我们可以看下BeanPropertyRowMapper里面的转换规则,一般如果我们使用标准来命名属性和字段名,都能直接转换。
4、总结
这里我们将了原生SQL的使用,原生SQL最灵活,但是工作量也越多,一般只有在业务非常复杂的情况下或者出现性能瓶颈的时候我们才使用。
在这里,基本所有的查询方法都提到了,不过因为我们现在的例子只有一个没有关联关系的实体,所以介绍的都是简单的查询,随着我们业务的深入,后面的查询会越来越复杂。
代码:
https://github.com/www15119258/springboot-study/tree/branch17
网友评论