数据存取依赖klg-jpa项目,[详见klg-jpa项目](https://gitee.com/klguang/klg-jpa)
配置文件为`classpath:spring-jpa.xml`
## 扫描entity
```
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="packagesToScan">
<list>
<value>org.coderfun.boot.core.entity</value>
<value>org.coderfun.common.*.entity</value>
</list>
</property>
<property name="dataSource" ref="dataSource" />
<property name="jpaVendorAdapter">
<bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="showSql" value="true" />
<property name="generateDdl" value="false" />
<property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect" />
</bean>
</property>
</bean>
```
## 扫描repository
```
<jpa:repositories
base-package="org.coderfun.boot.core.dao,org.coderfun.common.*.dao"
factory-class="klg.common.dataaccess.BaseRepositoryFactoryBean"
entity-manager-factory-ref="entityManagerFactory"
transaction-manager-ref="transactionManager" repository-impl-postfix="Impl" />
```
## 继承接口
项目中Repository继承BaseRepository,Service接口继承BaseService,ServiceImpl继承BaseServiceImpl;<br>BaseService的接口中有BaseRepository的大部分方法
## 快速上手
klg-jpa 便捷查询,含有日期比较的例子
```
@ResponseBody
@RequestMapping("/findpage")
public EasyUIPage findpage(
@RequestParam int page,
@RequestParam int rows,
@RequestParam(required=false) Long employeeid,
@RequestParam(required=false) String typeCode,
@RequestParam(required=false) @DateTimeFormat(pattern="yyyy-MM-dd") Date startDate,
@RequestParam(required=false) @DateTimeFormat(pattern="yyyy-MM-dd") Date endDate){
Pageable pageable=new PageRequest(page<1?0:page-1, rows, new Sort(Direction.DESC,"numId"));
Page<DrugOut> pageData=drugOutService.findPage(pageable,
AExpr.eq(DrugOut_.employeeid, employeeid).igEmpty(),// igEmpty()忽略空值,包括null和""
AExpr.eq(DrugOut_.typeCode, typeCode).igEmpty(),
AExpr.gte(DrugOut_.saledate, startDate).igEmpty(),//大于
AExpr.lte(DrugOut_.saledate, endDate).igEmpty());//小于
return new EasyUIPage(pageData);
}
```
## AExpr 属性表达式工厂
|方法 |说明 |
| --- | --- |
| eq | = |
| ne | <> |
| gt | > |
| lt | < |
| gte | >= |
| lte | <= |
| like |模糊匹配,注意必须包含"%"通配符 |
| contain | 包含字符串,即like查询,在两边都有"%"通配符 |
|in |in |
| between| between|
|isNull | isNull|
| isNotNull|isNotNull |