增加pagemodel对象
diff --git a/leaveschool/basics-data/src/main/java/com/supwisdom/leaveschool/basicsdata/Repository/DictionaryTypeRepository.java b/leaveschool/basics-data/src/main/java/com/supwisdom/leaveschool/basicsdata/Repository/DictionaryTypeRepository.java
index eb72101..87e9292 100644
--- a/leaveschool/basics-data/src/main/java/com/supwisdom/leaveschool/basicsdata/Repository/DictionaryTypeRepository.java
+++ b/leaveschool/basics-data/src/main/java/com/supwisdom/leaveschool/basicsdata/Repository/DictionaryTypeRepository.java
@@ -1,41 +1,31 @@
-package com.supwisdom.leaveschool.basicsdata.Repository;
+package com.supwisdom.leaveschool.basicsdata.repository;
 
+import java.util.HashMap;
 import java.util.Map;
 
-import org.springframework.data.domain.Example;
-import org.springframework.data.domain.ExampleMatcher;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageRequest;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Repository;
 
 import com.supwisdom.leaveschool.basicsdata.domain.DictionaryType;
-import com.supwisdom.leaveschool.common.repository.BaseJpaRepository;
-import com.supwisdom.leaveschool.common.util.MapBeanUtils;
+import com.supwisdom.leaveschool.common.model.PageModel;
+import com.supwisdom.leaveschool.common.repository.SimpleBaseDao;
 
 @Repository
-public interface DictionaryTypeRepository extends BaseJpaRepository<DictionaryType> {
-  
-	public default Page<DictionaryType> selectPageListByQuery(int pageIndex, int pageSize, Map<String, Object> mapBean) {
+public class DictionaryTypeRepository extends SimpleBaseDao{
 
-		DictionaryType probe = new DictionaryType();
-		ExampleMatcher matcher = ExampleMatcher.matching();
 		
-//		probe.setEnabled(true);
-//		matcher.withMatcher("enabled", ExampleMatcher.GenericPropertyMatchers.exact());
-	    if (mapBean != null&&mapBean.keySet().size()>0) {
-	      probe.setName(MapBeanUtils.getString(mapBean, "name"));
-	      matcher.withMatcher("name", ExampleMatcher.GenericPropertyMatchers.contains());
-	    }
-//	    
-//	    matcher.withMatcher("code", ExampleMatcher.GenericPropertyMatchers.contains())
-//	        .withMatcher("name", ExampleMatcher.GenericPropertyMatchers.contains())
-//	        .withMatcher("enabled", ExampleMatcher.GenericPropertyMatchers.exact());
-	    
-	    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
-	    Example<DictionaryType> example = Example.of(probe, matcher);
-	    
-	    Page<DictionaryType> page = this.findAll(example, pageRequest);
-	    
-	    return page;
-	  }
+		public PageModel<DictionaryType> getDictionaryTypePage(String name, int pageIndex,
+				int pageSize)  {
+				Map<String,Object> params = new HashMap<String,Object>();  
+				if(StringUtils.isNotBlank(name)){
+					name = StringUtils.trimToEmpty(name);
+					params.put("or upper(code) like ? ","%"+name.toUpperCase()+"%");
+					params.put("or name like ? ","%"+name+"%");
+				}
+				name="%"+name+"%";
+				String sql =  "select * from TB_B_DICTIONARY_TYPE where upper(code) like ?1 or name like ?2";
+				return this.getScrollSqlData(DictionaryType.class, pageIndex, pageSize, sql, name,name);
+		}
+
+
 }
diff --git a/leaveschool/basics-data/src/main/java/com/supwisdom/leaveschool/basicsdata/api/Api1DictionaryTypeController.java b/leaveschool/basics-data/src/main/java/com/supwisdom/leaveschool/basicsdata/api/Api1DictionaryTypeController.java
index 155e9a2..e88001b 100644
--- a/leaveschool/basics-data/src/main/java/com/supwisdom/leaveschool/basicsdata/api/Api1DictionaryTypeController.java
+++ b/leaveschool/basics-data/src/main/java/com/supwisdom/leaveschool/basicsdata/api/Api1DictionaryTypeController.java
@@ -1,17 +1,17 @@
 package com.supwisdom.leaveschool.basicsdata.api;
 
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.data.domain.Page;
 import org.springframework.http.HttpStatus;
 import org.springframework.util.MimeTypeUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseStatus;
 import org.springframework.web.bind.annotation.RestController;
 
-import com.supwisdom.leaveschool.basicsdata.Repository.DictionaryTypeRepository;
 import com.supwisdom.leaveschool.basicsdata.domain.DictionaryType;
-import com.supwisdom.leaveschool.common.controller.api.CrudApiController;
+import com.supwisdom.leaveschool.basicsdata.repository.DictionaryTypeRepository;
+import com.supwisdom.leaveschool.common.model.PageModel;
 import com.supwisdom.leaveschool.common.model.PagerRequestModel;
 import com.supwisdom.leaveschool.common.model.PagerResponseModel;
 
@@ -23,31 +23,53 @@
 @RestController
 @RequestMapping("/api/v1/basics-data/dictionary-types")
 @Api(value="字典表类型操作",tags={"字典表类型的操作接口"})
-public class Api1DictionaryTypeController extends CrudApiController<DictionaryType, DictionaryTypeRepository> {
+public class Api1DictionaryTypeController {
 
   @Autowired
   private DictionaryTypeRepository dictionaryTypeRepository;
 
-	@Override
-	protected DictionaryTypeRepository getRepository() {
-		return dictionaryTypeRepository;
-	}
 	
-	  @GetMapping(path = "/page/sercher",produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+	  @GetMapping(produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
 	  @ResponseStatus(value = HttpStatus.OK)
-	  @ApiOperation(value="根据查询条件获取字典表类型列表",notes="注意问题点")
+	  @ApiOperation(value="获取字典表类型列表",notes="根据查询条件获取字典表类型列表")
 	  @ApiImplicitParams({
-	      @ApiImplicitParam(name = "pageIndex", value = "当前第页数,默认0,为第一页", dataType = "int", required = true, defaultValue = "0"),
-	      @ApiImplicitParam(name = "pageSize", value = "每页条数,默认20", required = true, dataType = "int", paramType = "query", defaultValue = "20"),
-	      @ApiImplicitParam(name = "name", value = "类型码或名称", required = false, dataType = "string", paramType = "query", defaultValue = "")
+	      @ApiImplicitParam(name = "pageIndex", value = "当前第页数,默认0,为第一页", dataType = "integer",defaultValue="0", paramType="query"),
+	      @ApiImplicitParam(name = "pageSize", value = "每页条数,默认20",  dataType = "integer",defaultValue="20", paramType="query"),
+	      @ApiImplicitParam(name = "name", value = "类型码或名称", dataType = "string",  defaultValue = "",paramType="query")
 	  })
-	  public Object list(int pageIndex,int pageSize,String name) {
+	  public Object list(@RequestParam(name="pageIndex", defaultValue="1",required=true) Integer pageIndex, @RequestParam(name="pageSize", defaultValue="1",required=true) Integer pageSize,String name) {
 		 PagerRequestModel pagerRequestModel = new PagerRequestModel(pageIndex, pageSize);
 		 pagerRequestModel.getMapBean().put("name", name);
-		 Page<DictionaryType> page = dictionaryTypeRepository.selectPageListByQuery(pagerRequestModel.getPageIndex(), pagerRequestModel.getPageSize(), pagerRequestModel.getMapBean());
-		 PagerResponseModel<DictionaryType> pagerResponseModel = PagerResponseModel.of(pagerRequestModel,page);
-	    return pagerResponseModel;
+		 PageModel<DictionaryType> page = dictionaryTypeRepository.getDictionaryTypePage(name,pagerRequestModel.getPageIndex(), pagerRequestModel.getPageSize());
+	    return page;
 	  }
+	  
+	  
+//	  @GetMapping(path="/search", produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+//	  @ResponseStatus(value = HttpStatus.OK)
+//	  @ApiOperation(value="获取字典表类型列表",notes="根据查询条件获取字典表类型列表")
+//	  public Object list2(@RequestParam(defaultValue="0") @ApiParam(name="pageIndex",value="当前第页数,默认0,为第一页",required=true,defaultValue="0",type="integer",format="int32") Integer pageIndex, 
+//			  				@RequestParam(defaultValue="20")  @ApiParam(name="pageSize",value="每页条数,默认20",required=true,defaultValue="20",type="integer",format="int32") Integer pageSize,
+//			  				@RequestParam(defaultValue="") @ApiParam(name="name",value="类型码或名称",required=false,defaultValue="") String name) {
+//		 PagerRequestModel pagerRequestModel = new PagerRequestModel(pageIndex, pageSize);
+//		 pagerRequestModel.getMapBean().put("name", name);
+//		 Page<DictionaryType> page = dictionaryTypeRepository.selectPageListByQuery(pagerRequestModel.getPageIndex(), pagerRequestModel.getPageSize(), pagerRequestModel.getMapBean());
+//		 PagerResponseModel<DictionaryType> pagerResponseModel = PagerResponseModel.of(pagerRequestModel,page);
+//	    return pagerResponseModel;
+//	  }
+	  
+//	  @PostMapping(consumes = MimeTypeUtils.APPLICATION_JSON_VALUE, produces = MimeTypeUtils.APPLICATION_JSON_VALUE)
+//	  @ResponseStatus(value = HttpStatus.OK)
+//	  public Object create(String username,@RequestBody DictionaryType dictionaryType) {
+//	    
+//	    @SuppressWarnings("unused")
+//	    DictionaryType ret = dictionaryTypeRepository.insert(dictionaryType);
+//	    
+//	    SuccessResponseModel res = new SuccessResponseModel();
+//	    res.setSuccess("info.create.success");
+//	    
+//	    return res;
+//	  }
 
 
 }
diff --git a/leaveschool/basics-data/src/main/java/com/supwisdom/leaveschool/basicsdata/repository/DictionaryTypeRepository2.java b/leaveschool/basics-data/src/main/java/com/supwisdom/leaveschool/basicsdata/repository/DictionaryTypeRepository2.java
new file mode 100644
index 0000000..716f109
--- /dev/null
+++ b/leaveschool/basics-data/src/main/java/com/supwisdom/leaveschool/basicsdata/repository/DictionaryTypeRepository2.java
@@ -0,0 +1,46 @@
+package com.supwisdom.leaveschool.basicsdata.repository;
+
+import java.util.Map;
+
+import javax.persistence.EntityManager;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.domain.Example;
+import org.springframework.data.domain.ExampleMatcher;
+import org.springframework.data.domain.Page;
+import org.springframework.data.domain.PageRequest;
+import org.springframework.stereotype.Repository;
+
+import com.supwisdom.leaveschool.basicsdata.domain.DictionaryType;
+import com.supwisdom.leaveschool.common.repository.BaseJpaRepository;
+import com.supwisdom.leaveschool.common.util.MapBeanUtils;
+
+@Repository
+public interface DictionaryTypeRepository2 extends BaseJpaRepository<DictionaryType> {
+	
+//	@Autowired
+//    private EntityManager entityManager;
+  
+	public default Page<DictionaryType> selectPageListByQuery(int pageIndex, int pageSize, Map<String, Object> mapBean) {
+
+		DictionaryType probe = new DictionaryType();
+		ExampleMatcher matcher = ExampleMatcher.matching();
+		
+//		probe.setEnabled(true);
+//		matcher.withMatcher("enabled", ExampleMatcher.GenericPropertyMatchers.exact());
+	    if (mapBean != null&&mapBean.keySet().size()>0) {
+	      probe.setName(MapBeanUtils.getString(mapBean, "name"));
+	      matcher.withMatcher("name", ExampleMatcher.GenericPropertyMatchers.contains());
+	    }
+//	    
+//	    matcher.withMatcher("code", ExampleMatcher.GenericPropertyMatchers.contains())
+//	        .withMatcher("name", ExampleMatcher.GenericPropertyMatchers.contains())
+//	        .withMatcher("enabled", ExampleMatcher.GenericPropertyMatchers.exact());
+	    
+	    PageRequest pageRequest = PageRequest.of(pageIndex, pageSize);
+	    Example<DictionaryType> example = Example.of(probe, matcher);
+	    Page<DictionaryType> page = this.findAll(example, pageRequest);
+	    
+	    return page;
+	  }
+}
diff --git a/leaveschool/basics-data/src/main/resources/application.yml b/leaveschool/basics-data/src/main/resources/application.yml
index a36a52d..7392853 100644
--- a/leaveschool/basics-data/src/main/resources/application.yml
+++ b/leaveschool/basics-data/src/main/resources/application.yml
@@ -15,7 +15,8 @@
     name: sample-user
   datasource:
     driver-class-name: com.mysql.jdbc.Driver
-    url: jdbc:mysql://172.50.10.15:3306/leave_school?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull
+##    url: jdbc:mysql://172.50.10.15:3306/leave_school?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull
+    url: jdbc:mysql://180.166.150.114:9512/leave_school?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull
     username: leave_school
     password: 111111
   jpa:
diff --git a/leaveschool/client/src/main/resources/application.yml b/leaveschool/client/src/main/resources/application.yml
index c395a5a..96983e3 100644
--- a/leaveschool/client/src/main/resources/application.yml
+++ b/leaveschool/client/src/main/resources/application.yml
@@ -58,5 +58,6 @@
 
 gateway.api.url: http://localhost:5555
 
-#sample-user.api.url: ${gateway.api.url}/sample-user
-sample-user.api.url: http://localhost:10010
+#sample-user.api.url: ${gateway.api.url}/leaveschool-user
+leaveschool-user.api.url: http://localhost:10010
+leaveschool-basics-data.api.url: http://localhost:10020
diff --git a/leaveschool/common/src/main/java/com/supwisdom/leaveschool/common/model/PageModel.java b/leaveschool/common/src/main/java/com/supwisdom/leaveschool/common/model/PageModel.java
new file mode 100644
index 0000000..b7290b0
--- /dev/null
+++ b/leaveschool/common/src/main/java/com/supwisdom/leaveschool/common/model/PageModel.java
@@ -0,0 +1,114 @@
+/**
+ * 
+ */
+package com.supwisdom.leaveschool.common.model;
+
+import java.util.List;
+
+
+/**
+ * 
+ * @author Bo.Chen
+ *
+ * @param <T>
+ */
+public class PageModel<T> {
+
+	private List<T> list;
+	private int totalCount = 0;	//总条数
+	private int pageSize = 20;	//每页行数
+	private int totalPages;	//总共多少页
+	private int pre;	//上一页
+	private int next; 	//下一页
+	private int pageIndex;	//当前页号
+	
+	
+	public PageModel(){
+	}
+	public PageModel(int totalCount, List<T> list) {
+		super();
+		this.totalCount = totalCount;
+		this.list = list;
+	}
+	
+	public PageModel(int totalCount, List<T> res,int pageSize) {
+		this(totalCount,res);
+		this.pageSize = pageSize;
+		if(pageSize==-1){
+			this.totalPages = 1;
+		}else{
+			this.totalPages=(this.totalCount+this.pageSize-1)/this.pageSize;
+		}
+	}
+
+	public PageModel(int totalCount, List<T> res,int pageIndex,int pageSize) {
+		this(totalCount,res,pageSize);
+		this.pageIndex = pageIndex;
+		if(this.totalPages==1){
+			this.pre=1;
+			this.next=1;
+		}else if(this.totalPages==this.pageIndex){
+			this.pre=this.totalPages-1;
+			this.next=this.totalPages;
+		}else{
+			this.pre=this.totalPages-1;
+			this.next=this.totalPages+1;
+		}
+	}
+	
+	
+	public List<T> getList() {
+		return list;
+	}
+	public void setList(List<T> list) {
+		this.list = list;
+	}
+	
+	public int getTotalCount() {
+		return totalCount;
+	}
+	public void setTotalCount(int totalCount) {
+		this.totalCount = totalCount;
+	}
+	public int getPageSize() {
+		return pageSize;
+	}
+	public void setPageSize(int pageSize) {
+		this.pageSize = pageSize;
+	}
+	public int getTotalPages() {
+		return totalPages;
+	}
+	public void setTotalPages(int totalPages) {
+		this.totalPages = totalPages;
+	}
+	public int getPageIndex() {
+		return pageIndex;
+	}
+	public void setPageIndex(int pageIndex) {
+		this.pageIndex = pageIndex;
+	}
+	
+	public int getPre() {
+		return pageIndex-1<=0?1:pageIndex-1;
+	}
+	public void setPre(int pre) {
+	}
+	public int getNext() {
+		return pageIndex+1>totalPages?totalPages:pageIndex+1;
+	}
+	public void setNext(int next) {
+	}
+	
+	
+	
+	@Override
+	public String toString() {
+		StringBuilder builder = new StringBuilder();
+		builder.append("总条数:").append(this.totalCount)
+				.append(",总页:").append(totalPages)
+				.append(",当前页:").append(pageIndex);
+		return builder.toString();
+	}
+	
+}
diff --git a/leaveschool/common/src/main/java/com/supwisdom/leaveschool/common/model/PagerResponseModel.java b/leaveschool/common/src/main/java/com/supwisdom/leaveschool/common/model/PagerResponseModel.java
index 548440a..3203d78 100644
--- a/leaveschool/common/src/main/java/com/supwisdom/leaveschool/common/model/PagerResponseModel.java
+++ b/leaveschool/common/src/main/java/com/supwisdom/leaveschool/common/model/PagerResponseModel.java
@@ -40,16 +40,16 @@
 	  }
 
   public static <T> PagerResponseModel<T> of(PagerRequestModel pagerRequestModel,Page<T> page) {
-    PagerResponseModel<T> pagerResponseModell = new PagerResponseModel<T>();
-    pagerResponseModell.setPageIndex(pagerRequestModel.getPageIndex());
-    pagerResponseModell.setPageSize(pagerRequestModel.getPageSize());
-    pagerResponseModell.setMapBean(pagerRequestModel.getMapBean());
-    pagerResponseModell.setCurrentItemCount(page.getNumberOfElements());
-    pagerResponseModell.setPageCount(page.getTotalPages());
-    pagerResponseModell.setRecordCount(page.getTotalElements());
-    pagerResponseModell.setItems(page.getContent());
+//    PagerResponseModel<T> pagerResponseModell = new PagerResponseModel<T>();
+//    pagerResponseModell.setPageIndex(pagerRequestModel.getPageIndex());
+//    pagerResponseModell.setPageSize(pagerRequestModel.getPageSize());
+//    pagerResponseModell.setMapBean(pagerRequestModel.getMapBean());
+//    pagerResponseModell.setCurrentItemCount(page.getNumberOfElements());
+//    pagerResponseModell.setPageCount(page.getTotalPages());
+//    pagerResponseModell.setRecordCount(page.getTotalElements());
+//    pagerResponseModell.setItems(page.getContent());
 
-    return pagerResponseModell;
+    return  new PagerResponseModel<T>(pagerRequestModel,page);
   }
   
   	public static <T> PagerResponseModel<T> of(PagerRequestModel pagerRequestModel) {
diff --git a/leaveschool/common/src/main/java/com/supwisdom/leaveschool/common/repository/BaseJpaRepository.java b/leaveschool/common/src/main/java/com/supwisdom/leaveschool/common/repository/BaseJpaRepository.java
index e1e0531..2156e2f 100644
--- a/leaveschool/common/src/main/java/com/supwisdom/leaveschool/common/repository/BaseJpaRepository.java
+++ b/leaveschool/common/src/main/java/com/supwisdom/leaveschool/common/repository/BaseJpaRepository.java
@@ -62,5 +62,6 @@
 
     return e;
   }
-
+    
+  
 }
diff --git a/leaveschool/common/src/main/java/com/supwisdom/leaveschool/common/repository/SimpleBaseDao.java b/leaveschool/common/src/main/java/com/supwisdom/leaveschool/common/repository/SimpleBaseDao.java
new file mode 100644
index 0000000..5c1ca00
--- /dev/null
+++ b/leaveschool/common/src/main/java/com/supwisdom/leaveschool/common/repository/SimpleBaseDao.java
@@ -0,0 +1,78 @@
+package com.supwisdom.leaveschool.common.repository;
+
+import java.util.List;
+
+import javax.persistence.EntityManager;
+import javax.persistence.Query;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Repository;
+import org.springframework.transaction.annotation.Transactional;
+
+import com.supwisdom.leaveschool.common.model.PageModel;
+
+
+@Transactional
+@Repository
+public class SimpleBaseDao  {
+
+	 	@Autowired
+	    private EntityManager entityManager;
+	 	
+	 	
+	
+
+	public EntityManager getEntityManager() {
+			return entityManager;
+		}
+
+	public  <T> PageModel<T> getScrollSqlData(Class<T> entityType, int pageIndex,
+			int pageSize, String sql, Object... params) {
+		List<T> list = getScrollDataList(entityType, sql, pageIndex, pageSize, params);
+		int count  = getCount(sql, params);
+		return new PageModel<T>(count,list,pageIndex,pageSize);
+	}
+	
+	@SuppressWarnings("unchecked")
+	private <T> List<T> getScrollDataList(Class<T> entityType,String sql,int pageIndex,int pageSize,Object... params) {
+		try {
+			Query query = this.entityManager.createNativeQuery(sql);
+			if(pageIndex!=-1 && pageSize!=-1){
+				if(pageIndex<=1) pageIndex=1;
+				query.setFirstResult(pageSize*(pageIndex-1));
+				query.setMaxResults(pageSize);
+			}
+			setQueryParameter(query, params);
+			 return query.getResultList();
+		} catch (Exception e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+		}
+		return null;
+	}
+	
+	public int getCount(String sql, Object... params) {
+		if(sql.toLowerCase().trim().startsWith("select")){
+			sql = "select count(*)" + sql.substring(sql.toLowerCase().indexOf("from")); 
+		}else{
+			sql = "select count(*) " + sql;
+		}
+		Query query =  this.entityManager.createNativeQuery(sql);
+		setQueryParameter(query, params);
+		Number count  = (Number)query.getSingleResult();
+		return count.intValue();
+	}
+	
+	/**
+	 * 设置查询参数
+	 * @param query 查询对象
+	 * @param params 参数值
+	 */
+	public static void setQueryParameter(Query query, Object... params){
+		if(params!=null&&params.length>0){
+			for(int i = 0; i < params.length ; i++){
+				query.setParameter(i+1, params[i]);
+			}
+		}
+	}
+}