jpa,querydsl
2016-05-06 14:48
337 查看
[TOC]# jpa
## 生成通用模板实现自定义方法有两种方法:1. 根据衍生规则进行实现,此种情况简单;查询方法衍生规则 http://docs.spring.io/spring-data/jpa/docs/1.10.1.RELEASE/reference/html/#repositories.query-methods.query-creation 2. 自己编写接口 OrderRepositoryExt - 在接口中添加自定义方法
- OrderRepository继承此接口
- OrderRepositoryImpl 实现此接口,这个实现类命名规则是一定的,在OrderRepository的基础上加Impl;spring基础会探测到此种情况,注入OrderRepository就可以了
### OrderRepository```public interface OrderRepository extends PagingAndSortingRepository<OrderEntity, String>, QueryDslPredicateExecutor<OrderEntity>, OrderRepositoryExt { /** * 根据渠道号和订单编号查询订单 * * @param orderNo * @param chanNo * @return */ public OrderEntity findFirstByOrderNoAndChanNo(String orderNo, String chanNo);}```### OrderRepositoryExt```public interface OrderRepositoryExt { public OrderEntity findByOrderNo(String orderNo);}```
### OrderRepositoryImpl```public class OrderRepositoryImpl implements OrderRepositoryExt { @Autowired private OrderRepository orderRepository; @Override public OrderEntity findByOrderNo(String orderNo) { QOrderEntity qOrderEntity = QOrderEntity.orderEntity; Predicate predicate = qOrderEntity.orderNo.eq(orderNo); return orderRepository.findOne(predicate); }}```### 使用方法```@RestController@RequestMapping("/test")public class OrderController { private static Logger log = LoggerFactory.getLogger(OrderController.class); @Autowired private OrderRepository repository; @RequestMapping("/orders") public Object order() { OrderEntity orderEntity = new OrderEntity(); orderEntity.setId(UUID.randomUUID().toString()); orderEntity.setAccountId("111"); orderEntity.setAmount(new BigDecimal(10)); orderEntity.setChanNo("1111"); orderEntity.setCreateAt(new Date()); orderEntity.setOrderNo(UUID.randomUUID().toString()); orderEntity.setOrderStatus("execed_success"); orderEntity.setOrderType("INVEST"); orderEntity.setProductId("2222"); orderEntity.setTransactTime(new Date()); orderEntity.setProductName("12312"); orderEntity.setUpdateAt(new Date()); repository.save(orderEntity); log.info("save-{}", JSONUtil.toJson(repository.findFirstByOrderNoAndChanNo(orderEntity.getOrderNo(), orderEntity.getChanNo()))); orderEntity.setProductName("update"); repository.save(orderEntity); log.info("update-{}", JSONUtil.toJson(repository.findByOrderNo(orderEntity.getOrderNo()))); log.info("all ={}", JSONUtil.toJson(repository.findAll())); List<String> ids = new ArrayList<>(); ids.add("11111"); return null; }```
## 手动编写hql查询实体对象idea识别不出来
来自为知笔记(Wiz)
## 生成通用模板实现自定义方法有两种方法:1. 根据衍生规则进行实现,此种情况简单;查询方法衍生规则 http://docs.spring.io/spring-data/jpa/docs/1.10.1.RELEASE/reference/html/#repositories.query-methods.query-creation 2. 自己编写接口 OrderRepositoryExt - 在接口中添加自定义方法
- OrderRepository继承此接口
- OrderRepositoryImpl 实现此接口,这个实现类命名规则是一定的,在OrderRepository的基础上加Impl;spring基础会探测到此种情况,注入OrderRepository就可以了
### OrderRepository```public interface OrderRepository extends PagingAndSortingRepository<OrderEntity, String>, QueryDslPredicateExecutor<OrderEntity>, OrderRepositoryExt { /** * 根据渠道号和订单编号查询订单 * * @param orderNo * @param chanNo * @return */ public OrderEntity findFirstByOrderNoAndChanNo(String orderNo, String chanNo);}```### OrderRepositoryExt```public interface OrderRepositoryExt { public OrderEntity findByOrderNo(String orderNo);}```
### OrderRepositoryImpl```public class OrderRepositoryImpl implements OrderRepositoryExt { @Autowired private OrderRepository orderRepository; @Override public OrderEntity findByOrderNo(String orderNo) { QOrderEntity qOrderEntity = QOrderEntity.orderEntity; Predicate predicate = qOrderEntity.orderNo.eq(orderNo); return orderRepository.findOne(predicate); }}```### 使用方法```@RestController@RequestMapping("/test")public class OrderController { private static Logger log = LoggerFactory.getLogger(OrderController.class); @Autowired private OrderRepository repository; @RequestMapping("/orders") public Object order() { OrderEntity orderEntity = new OrderEntity(); orderEntity.setId(UUID.randomUUID().toString()); orderEntity.setAccountId("111"); orderEntity.setAmount(new BigDecimal(10)); orderEntity.setChanNo("1111"); orderEntity.setCreateAt(new Date()); orderEntity.setOrderNo(UUID.randomUUID().toString()); orderEntity.setOrderStatus("execed_success"); orderEntity.setOrderType("INVEST"); orderEntity.setProductId("2222"); orderEntity.setTransactTime(new Date()); orderEntity.setProductName("12312"); orderEntity.setUpdateAt(new Date()); repository.save(orderEntity); log.info("save-{}", JSONUtil.toJson(repository.findFirstByOrderNoAndChanNo(orderEntity.getOrderNo(), orderEntity.getChanNo()))); orderEntity.setProductName("update"); repository.save(orderEntity); log.info("update-{}", JSONUtil.toJson(repository.findByOrderNo(orderEntity.getOrderNo()))); log.info("all ={}", JSONUtil.toJson(repository.findAll())); List<String> ids = new ArrayList<>(); ids.add("11111"); return null; }```
## 手动编写hql查询实体对象idea识别不出来
来自为知笔记(Wiz)
相关文章推荐
- ajax request VS normal request
- Android字符串相关类 - CharSequence
- Android字符串相关类 - CharSequence
- java.lang.IllegalArgumentException: id to load is required for loading
- iOS UICollectionView XIB
- iOS开发-UITextField 使用全面解析
- QML UI布局
- 用结点实现链表LinkedList,用数组和结点实现栈Stack,用数组和结点链表实现队列Queue
- cannot convert value of type cbbf 'String!' to expected argument type 'inout String'
- Java druid的使用
- Backpropagation, Intuitions
- NSOperationqueue
- H5开发01——mui.fire()触发自定义事件
- UIMenuController使用
- rpmbuild的一个小常识
- java中BlockingQueue 的使用
- [codeforces]#350E. Correct Bracket Sequence Editor
- IOS UIView 设置单边实现
- poj 1141 Brackets Sequence ( 区间dp+输出方案 )
- ios控件 UIPickerView应用 制作简易省、市、地区选择器[原创]