JPA、Hibernate等ORM框架。
mybatis是很流行,非常方便的动态sql,但是也因为有xml的SQL文件,是其他框架的优势显示出来了,比如Hibernate。
这些框架的目的就是干掉SQL,现在看来任重道远。
简单的crud操作很容易,但是对于嵌套的查询语句,多表查询语句,以及条件查询语句,这些都很复杂,
@Repository
public interface UserRepository extends JpaRepository<User, Long> , JpaSpecificationExecutor<User>{
/**
* 根据多个过滤条件查询用户
* @param sex, 性别, 如果为null表示不限制性别, 查询所有性别;
* @param minAge, 年龄下限, 如果小于零表示不限制年龄
* @param maxAge, 年龄上限
* @param deptIds, 部门id的list, 一定不能为空, 包含-1L表示查询所有部门
* @return
*/
@Query("select user from User user where" +
"(:sex is null or user.sex = :sex) and" +
"(:minAge < 0 or (user.age>=:minAge and user.age<=:maxAge) ) and" +
"(-1L in :deptIds or user.dept.id in :deptIds)")
List<User> findUser(String sex,Integer minAge,Integer maxAge,List<Long> deptIds);
}
参考博文:jpa的动态sql
日进有功