// Path: demo/demo-service/src/main/java/com/xx/demo/test/domain/entity/CustomerEntity.java
// @Entity
// @Table(name = "demo_customer")
// public class CustomerEntity extends BaseEntity {
// 	private static final long serialVersionUID = 1L;
// 	@Column( nullable=true)
//     private String name;
// 	@ManyToOne()
//     private DictionaryEntity sex;
// 	@ManyToOne()
//     private CompanyEntity company;
// 	@Column( nullable=true)
//     private Boolean vip = false;
// 	@Column( nullable=true)
// 	@DateTimeFormat(pattern="yyyy-MM-dd")
//     private Date dob;
// 	@Column( nullable=true)
//     private String phone;
// 	@Column( nullable=true)
//     private String address;
// 	public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 	public DictionaryEntity getSex() {
//         return sex;
//     }
// 
//     public void setSex(DictionaryEntity sex) {
//         this.sex = sex;
//     }
// 	public CompanyEntity getCompany() {
//         return company;
//     }
// 
//     public void setCompany(CompanyEntity company) {
//         this.company = company;
//     }
// 	public Boolean getVip() {
//         return vip;
//     }
// 
//     public void setVip(Boolean vip) {
//         this.vip = vip;
//     }
// 	public Date getDob() {
//         return dob;
//     }
// 
//     public void setDob(Date dob) {
//         this.dob = dob;
//     }
// 	public String getPhone() {
//         return phone;
//     }
// 
//     public void setPhone(String phone) {
//         this.phone = phone;
//     }
// 	public String getAddress() {
//         return address;
//     }
// 
//     public void setAddress(String address) {
//         this.address = address;
//     }
// }
// 
// Path: demo/demo-service/src/main/java/com/xx/demo/test/domain/CustomerQueryParam.java
// public class CustomerQueryParam  extends DefaultDataPermissionQueryParam implements QueryParam {
//     private String name;
//     private String sexId;
//     private Boolean vip;
// 	@DateTimeFormat(pattern="yyyy-MM-dd")
//     private Date dobStart;
// 	@DateTimeFormat(pattern="yyyy-MM-dd")
//     private Date dobEnd;
//     private String phone;
// 	
// 	public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 	
// 	public String getSexId() {
//         return sexId;
//     }
// 
//     public void setSexId(String sexId) {
//         this.sexId = sexId;
//     }
// 	
// 	public Boolean getVip() {
//         return vip;
//     }
// 
//     public void setVip(Boolean vip) {
//         this.vip = vip;
//     }
// 	
// 	public Date getDobStart() {
//         return dobStart;
//     }
// 
//     public void setDobStart(Date dobStart) {
//         this.dobStart = dobStart;
//     }
// 	
// 	public Date getDobEnd() {
//         return dobEnd;
//     }
// 
//     public void setDobEnd(Date dobEnd) {
//         this.dobEnd = dobEnd;
//     }
// 	
// 	public String getPhone() {
//         return phone;
//     }
// 
//     public void setPhone(String phone) {
//         this.phone = phone;
//     }
// }


import org.springframework.data.jpa.repository.Query;
import com.loy.e.core.query.annotation.DynamicQuery;
import com.xx.demo.test.domain.entity.CustomerEntity;
import org.springframework.data.domain.Pageable;
import com.xx.demo.test.domain.CustomerQueryParam;
import org.springframework.data.domain.Page;
import com.loy.e.core.repository.GenericRepository;
package com.xx.demo.test.repository;


/**
 * 
 * @author Loy Fu qq群 540553957 website = http://www.17jee.com
 */
public interface CustomerRepository extends GenericRepository<CustomerEntity, String> {

    @Query(value=" from CustomerEntity x where  1=1  <notEmpty name='name'> and x.name like  '%${name}%' </notEmpty><notEmpty name='sexId'> and x.sex.id =  :sexId </notEmpty><notEmpty name='vip'> and x.vip =  :vip </notEmpty><notEmpty name='dobStart'> and x.dob &gt;=  :dobStart </notEmpty><notEmpty name='dobEnd'> and x.dob &lt;=  :dobEnd </notEmpty><notEmpty name='phone'> and x.phone like  '%${phone}%' </notEmpty>")
    @DynamicQuery
// Path: demo/demo-service/src/main/java/com/xx/demo/test/domain/entity/CustomerEntity.java
// @Entity
// @Table(name = "demo_customer")
// public class CustomerEntity extends BaseEntity {
// 	private static final long serialVersionUID = 1L;
// 	@Column( nullable=true)
//     private String name;
// 	@ManyToOne()
//     private DictionaryEntity sex;
// 	@ManyToOne()
//     private CompanyEntity company;
// 	@Column( nullable=true)
//     private Boolean vip = false;
// 	@Column( nullable=true)
// 	@DateTimeFormat(pattern="yyyy-MM-dd")
//     private Date dob;
// 	@Column( nullable=true)
//     private String phone;
// 	@Column( nullable=true)
//     private String address;
// 	public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 	public DictionaryEntity getSex() {
//         return sex;
//     }
// 
//     public void setSex(DictionaryEntity sex) {
//         this.sex = sex;
//     }
// 	public CompanyEntity getCompany() {
//         return company;
//     }
// 
//     public void setCompany(CompanyEntity company) {
//         this.company = company;
//     }
// 	public Boolean getVip() {
//         return vip;
//     }
// 
//     public void setVip(Boolean vip) {
//         this.vip = vip;
//     }
// 	public Date getDob() {
//         return dob;
//     }
// 
//     public void setDob(Date dob) {
//         this.dob = dob;
//     }
// 	public String getPhone() {
//         return phone;
//     }
// 
//     public void setPhone(String phone) {
//         this.phone = phone;
//     }
// 	public String getAddress() {
//         return address;
//     }
// 
//     public void setAddress(String address) {
//         this.address = address;
//     }
// }
// 
// Path: demo/demo-service/src/main/java/com/xx/demo/test/domain/CustomerQueryParam.java
// public class CustomerQueryParam  extends DefaultDataPermissionQueryParam implements QueryParam {
//     private String name;
//     private String sexId;
//     private Boolean vip;
// 	@DateTimeFormat(pattern="yyyy-MM-dd")
//     private Date dobStart;
// 	@DateTimeFormat(pattern="yyyy-MM-dd")
//     private Date dobEnd;
//     private String phone;
// 	
// 	public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 	
// 	public String getSexId() {
//         return sexId;
//     }
// 
//     public void setSexId(String sexId) {
//         this.sexId = sexId;
//     }
// 	
// 	public Boolean getVip() {
//         return vip;
//     }
// 
//     public void setVip(Boolean vip) {
//         this.vip = vip;
//     }
// 	
// 	public Date getDobStart() {
//         return dobStart;
//     }
// 
//     public void setDobStart(Date dobStart) {
//         this.dobStart = dobStart;
//     }
// 	
// 	public Date getDobEnd() {
//         return dobEnd;
//     }
// 
//     public void setDobEnd(Date dobEnd) {
//         this.dobEnd = dobEnd;
//     }
// 	
// 	public String getPhone() {
//         return phone;
//     }
// 
//     public void setPhone(String phone) {
//         this.phone = phone;
//     }
// }


// Path: demo/demo-service/src/main/java/com/xx/demo/test/repository/CustomerRepository.java
import org.springframework.data.jpa.repository.Query;
import com.loy.e.core.query.annotation.DynamicQuery;
import com.xx.demo.test.domain.entity.CustomerEntity;
import org.springframework.data.domain.Pageable;
import com.xx.demo.test.domain.CustomerQueryParam;
import org.springframework.data.domain.Page;
import com.loy.e.core.repository.GenericRepository;

package com.xx.demo.test.repository;


/**
 * 
 * @author Loy Fu qq群 540553957 website = http://www.17jee.com
 */
public interface CustomerRepository extends GenericRepository<CustomerEntity, String> {

    @Query(value=" from CustomerEntity x where  1=1  <notEmpty name='name'> and x.name like  '%${name}%' </notEmpty><notEmpty name='sexId'> and x.sex.id =  :sexId </notEmpty><notEmpty name='vip'> and x.vip =  :vip </notEmpty><notEmpty name='dobStart'> and x.dob &gt;=  :dobStart </notEmpty><notEmpty name='dobEnd'> and x.dob &lt;=  :dobEnd </notEmpty><notEmpty name='phone'> and x.phone like  '%${phone}%' </notEmpty>")
    @DynamicQuery
    Page<CustomerEntity> findCustomerPage(CustomerQueryParam customerQueryParam, Pageable pageable);