实现QueryDSL通用查询语言整合SpringDataJPA完成单表的查询
QueryDSL 提供了JPAQueryFactory 和 SQLQueryFactory用来操作数据库。JPAQueryFactory 依赖于JPA,必须要有类似hibernate这种实现了JPA的ORM框架,使用起来比较方便,配置JPAQueryFactory :
@RestController @RequestMapping("/t/") public class Text2Controller { @Autowired private Text2Dao text2Dao; //实体类管理者 @Autowired private EntityManager entityManager; //JPA查询工程 @Autowired private JPAQueryFactory jpaQueryFactory; @Bean @Autowired public JPAQueryFactory jpaQuery(EntityManager entityManager) { return new JPAQueryFactory(entityManager); } ///通过id查询 @Autowired private TextDao textDao; @RequestMapping("user") public List<Pmarea> user(Integer start){ //使用Queryds1查询 QPmarea Qp = QPmarea.pmarea; //查询返回结果 List<Pmarea> fetch = jpaQueryFactory.selectFrom(Qp)//查询源 .where(Qp.id.eq(start))//根据id查询 .fetch();//执行查询获取数据 return fetch; } //查询 通过名字 @RequestMapping("alg") public List<Pmarea> alg(String name){ QPmarea Qp = QPmarea.pmarea; return jpaQueryFactory .selectFrom(Qp) .where(Qp.name.eq(name)) .fetch(); } //删除 还没成功还 @RequestMapping("ltc") public String ltc(String name){ QPmarea Qp = QPmarea.pmarea; jpaQueryFactory .delete(Qp) .where(Qp.name.eq(name)).execute(); return "delete ok"; } //修改 @RequestMapping("tst") @Transactional public String tst(String name,Integer id){ QPmarea Qp = QPmarea.pmarea; jpaQueryFactory .update(Qp) .set(Qp.name,name) .where(Qp.id.eq(id)) .execute(); return "update ok"; } //根据名字模糊查询 @RequestMapping("like") @Transactional public List<Pmarea> like(String name){ QPmarea Qp = QPmarea.pmarea; return jpaQueryFactory .selectFrom(Qp) .where(Qp.name.like(name)) .fetch(); } }