1. 程式人生 > >Spring使用JdbcTemplate實現對資料庫操作 (內部類定義RowMapper)

Spring使用JdbcTemplate實現對資料庫操作 (內部類定義RowMapper)

http://blog.csdn.net/wyc_cs/article/details/37766221

Spring對資料庫的操作使用JdbcTemplate來封裝JDBC,結合Spring的注入特性可以很方便的實現對資料庫的訪問操作。

使用JdbcTemplate可以像JDBC一樣來編寫資料庫的操作程式碼,與hibernate相比對SQL語句的控制上會更靈活,下面以一個例子來講解JdbcTemplate的使用及相應的API。

一、實體Bean

  1. package com.orm.dto;  
  2. import java.sql.Timestamp;  
  3. publicclass AreaDto implements
     java.io.Serializable {  
  4.     privatestaticfinallong serialVersionUID = 1L;  
  5.     private Integer areaid;  
  6.     private String area_name;  
  7.     private String area_detail;  
  8.     private Integer floor_id;  
  9.     private Integer build_id;  
  10.     private String region_name;  
  11.     private String sortno;  
  12.     private
     Timestamp insert_time;  
  13.     private Timestamp update_time;  
  14.     private Integer operate_id;  
  15.     public AreaDto() {  
  16.     }  
  17.     public AreaDto(Integer areaid) {  
  18.         this.areaid = areaid;  
  19.     }  
  20.     public Integer getAreaid() {  
  21.         return areaid;  
  22.     }  
  23.     publicvoid setAreaid(Integer areaid) {  
  24.         this.areaid = areaid;  
  25.     }  
  26.     public String getArea_name() {  
  27.         return area_name;  
  28.     }  
  29.     publicvoid setArea_name(String area_name) {  
  30.         this.area_name = area_name;  
  31.     }  
  32.     public String getArea_detail() {  
  33.         return area_detail;  
  34.     }  
  35.     publicvoid setArea_detail(String area_detail) {  
  36.         this.area_detail = area_detail;  
  37.     }  
  38.     public Integer getFloor_id() {  
  39.         return floor_id;  
  40.     }  
  41.     publicvoid setFloor_id(Integer floor_id) {  
  42.         this.floor_id = floor_id;  
  43.     }  
  44.     public Integer getBuild_id() {  
  45.         return build_id;  
  46.     }  
  47.     publicvoid setBuild_id(Integer build_id) {  
  48.         this.build_id = build_id;  
  49.     }  
  50.     public String getRegion_name() {  
  51.         return region_name;  
  52.     }  
  53.     publicvoid setRegion_name(String region_name) {  
  54.         this.region_name = region_name;  
  55.     }  
  56.     public String getSortno() {  
  57.         return sortno;  
  58.     }  
  59.     publicvoid setSortno(String sortno) {  
  60.         this.sortno = sortno;  
  61.     }  
  62.     public Timestamp getInsert_time() {  
  63.         return insert_time;  
  64.     }  
  65.     publicvoid setInsert_time(Timestamp insert_time) {  
  66.         this.insert_time = insert_time;  
  67.     }  
  68.     public Timestamp getUpdate_time() {  
  69.         return update_time;  
  70.     }  
  71.     publicvoid setUpdate_time(Timestamp update_time) {  
  72.         this.update_time = update_time;  
  73.     }  
  74.     public Integer getOperate_id() {  
  75.         return operate_id;  
  76.     }  
  77.     publicvoid setOperate_id(Integer operate_id) {  
  78.         this.operate_id = operate_id;  
  79.     }  
  80. }  

  1. package com.orm.dto;  
  2. import java.sql.Timestamp;  
  3. publicclass BuildingDto implements java.io.Serializable {  
  4.     privatestaticfinallong serialVersionUID = 1L;  
  5.     private Integer buildid;  
  6.     private String buildname;  
  7.     private String detail;  
  8.     private String sortno;  
  9.     private Timestamp insertTime;  
  10.     private Timestamp updateTime;  
  11.     private Integer operateId;  
  12.     public BuildingDto() {  
  13.     }  
  14.     public BuildingDto(Integer buildid) {  
  15.         this.buildid = buildid;  
  16.     }  
  17.     public BuildingDto(Integer buildid, String buildname, String detail, String sortno, Timestamp insertTime,  
  18.             Timestamp updateTime, Integer operateId) {  
  19.         this.buildid = buildid;  
  20.         this.buildname = buildname;  
  21.         this.detail = detail;  
  22.         this.sortno = sortno;  
  23.         this.insertTime = insertTime;  
  24.         this.updateTime = updateTime;  
  25.         this.operateId = operateId;  
  26.     }  
  27.     public Integer getBuildid() {  
  28.         returnthis.buildid;  
  29.     }  
  30.     publicvoid setBuildid(Integer buildid) {  
  31.         this.buildid = buildid;  
  32.     }  
  33.     public String getBuildname() {  
  34.         returnthis.buildname;  
  35.     }  
  36.     publicvoid setBuildname(String buildname) {  
  37.         this.buildname = buildname;  
  38.     }  
  39.     public String getDetail() {  
  40.         returnthis.detail;  
  41.     }  
  42.     publicvoid setDetail(String detail) {  
  43.         this.detail = detail;  
  44.     }  
  45.     public String getSortno() {  
  46.         returnthis.sortno;  
  47.     }  
  48.     publicvoid setSortno(String sortno) {  
  49.         this.sortno = sortno;  
  50.     }  
  51.     public Timestamp getInsertTime() {  
  52.         returnthis.insertTime;  
  53.     }  
  54.     publicvoid setInsertTime(Timestamp insertTime) {  
  55.         this.insertTime = insertTime;  
  56.     }  
  57.     public Timestamp getUpdateTime() {  
  58.         returnthis.updateTime;  
  59.     }  
  60.     publicvoid setUpdateTime(Timestamp updateTime) {  
  61.         this.updateTime = updateTime;  
  62.     }  
  63.     public Integer getOperateId() {  
  64.         returnthis.operateId;  
  65.     }  
  66.     publicvoid setOperateId(Integer operateId) {  
  67.         this.operateId = operateId;  
  68.     }  
  69. }  

  1. package com.orm.dto;  
  2. import java.sql.Timestamp;  
  3. publicclass FloorDto implements java.io.Serializable {  
  4.     privatestaticfinallong serialVersionUID = 1L;  
  5.     private Integer floorid;  
  6.     private String floorname;  
  7.     private Integer floor;  
  8.     private String detail;  
  9.     private Integer buildId;  
  10.     private String sortno;  
  11.     private Timestamp insertTime;  
  12.     private Timestamp updateTime;  
  13.     private Integer operateId;  
  14.     public FloorDto() {  
  15.     }  
  16.     public FloorDto(Integer floorid) {  
  17.         this.floorid = floorid;  
  18.     }  
  19.     public Integer getFloorid() {  
  20.         returnthis.floorid;  
  21.     }  
  22.     publicvoid setFloorid(Integer floorid) {  
  23.         this.floorid = floorid;  
  24.     }  
  25.     public String getFloorname() {  
  26.         returnthis.floorname;  
  27.     }  
  28.     publicvoid setFloorname(String floorname) {  
  29.         this.floorname = floorname;  
  30.     }  
  31.     public String getDetail() {  
  32.         returnthis.detail;  
  33.     }  
  34.     publicvoid setDetail(String detail) {  
  35.         this.detail = detail;  
  36.     }  
  37.     public Integer getBuildId() {  
  38.         returnthis.buildId;  
  39.     }  
  40.     publicvoid setBuildId(Integer buildId) {  
  41.         this.buildId = buildId;  
  42.     }  
  43.     public String getSortno() {  
  44.         returnthis.sortno;  
  45.     }  
  46.     publicvoid setSortno(String sortno) {  
  47.         this.sortno = sortno;  
  48.     }  
  49.     public Timestamp getInsertTime() {  
  50.         returnthis.insertTime;  
  51.     }  
  52.     publicvoid setInsertTime(Timestamp insertTime) {  
  53.         this.insertTime = insertTime;  
  54.     }  
  55.     public Timestamp getUpdateTime() {  
  56.         returnthis.updateTime;  
  57.     }  
  58.     publicvoid setUpdateTime(Timestamp updateTime) {  
  59.         this.updateTime = updateTime;  
  60.     }  
  61.     public Integer getOperateId() {  
  62.         returnthis.operateId;  
  63.     }  
  64.     publicvoid setOperateId(Integer operateId) {  
  65.         this.operateId = operateId;  
  66.     }  
  67.     public Integer getFloor() {  
  68.         return floor;  
  69.     }  
  70.     publicvoid setFloor(Integer floor) {  
  71.         this.floor = floor;  
  72.     }  
  73. }  

  1. package com.orm.dto;  
  2. import java.sql.Timestamp;  
  3. publicclass StoreDto implements java.io.Serializable {  
  4.     privatestaticfinallong serialVersionUID = 1L;  
  5.     private Integer id;  
  6.     private String storename;  
  7.     private String storenameen;  
  8.     private String storeno;  
  9.     private Integer build_Id;  
  10.     private Integer floor_Id;  
  11.     private Integer area_Id;  
  12.     private Integer type_Id;  
  13.     private Integer point_Id;  
  14.     private String storeowner;  
  15.     private String area;  
  16.     private String remark;  
  17.     private String status;  
  18.     private String sortno;  
  19.     private Timestamp inserttime;  
  20.     private Timestamp updatetime;  
  21.     private Integer operateid;  
  22.     public StoreDto() {  
  23.     }  
  24.     public StoreDto(Integer id) {  
  25.         this.id = id;  
  26.     }  
  27.     public Integer getId() {  
  28.         returnthis.id;  
  29.     }  
  30.     publicvoid setId(Integer id) {  
  31.         this.id = id;  
  32.     }  
  33.     public String getStorename() {  
  34.         returnthis.storename;  
  35.     }  
  36.     publicvoid setStorename(String storename) {  
  37.         this.storename = storename;  
  38.     }  
  39.     public String getStorenameen() {  
  40.         returnthis.storenameen;  
  41.     }  
  42.     publicvoid setStorenameen(String storenameen) {  
  43.         this.storenameen = storenameen;  
  44.     }  
  45.     public String getStoreno() {  
  46.         returnthis.storeno;  
  47.     }  
  48.     publicvoid setStoreno(String storeno) {  
  49.         this.storeno = storeno;  
  50.     }  
  51.     public Integer getBuild_Id() {  
  52.         returnthis.build_Id;  
  53.     }  
  54.     publicvoid setBuild_Id(Integer build_Id) {  
  55.         this.build_Id = build_Id;  
  56.     }  
  57.     public Integer getFloor_Id() {  
  58.         returnthis.floor_Id;  
  59.     }  
  60.     publicvoid setFloor_Id(Integer floor_Id) {  
  61.         this.floor_Id = floor_Id;  
  62.     }  
  63.     public Integer getArea_Id() {  
  64.         returnthis.area_Id;  
  65.     }  
  66.     publicvoid setArea_Id(Integer area_Id) {  
  67.         this.area_Id = area_Id;  
  68.     }  
  69.     public Integer getType_Id() {  
  70.         returnthis.type_Id;  
  71.     }  
  72.     publicvoid setType_Id(Integer type_Id) {  
  73.         this.type_Id = type_Id;  
  74.     }  
  75.     public Integer getPoint_Id() {  
  76.         returnthis.point_Id;  
  77.     }  
  78.     publicvoid setPoint_Id(Integer point_Id) {  
  79.         this.point_Id = point_Id;  
  80.     }  
  81.     public String getStoreowner() {  
  82.         returnthis.storeowner;  
  83.     }  
  84.     publicvoid setStoreowner(String storeowner) {  
  85.         this.storeowner = storeowner;  
  86.     }  
  87.     public String getArea() {  
  88.         returnthis.area;  
  89.     }  
  90.     publicvoid setArea(String area) {  
  91.         this.area = area;  
  92.     }  
  93.     public String getRemark() {  
  94.         returnthis.remark;  
  95.     }  
  96.     publicvoid setRemark(String remark) {  
  97.         this.remark = remark;  
  98.     }  
  99.     public String getStatus() {  
  100.         returnthis.status;  
  101.     }  
  102.     publicvoid setStatus(String status) {  
  103.         this.status = status;  
  104.     }  
  105.     public String getSortno() {  
  106.         returnthis.sortno;  
  107.     }  
  108.     publicvoid setSortno(String sortno) {  
  109.         this.sortno = sortno;  
  110.     }  
  111.     public Timestamp getInserttime() {  
  112.         returnthis.inserttime;  
  113.     }  
  114.     publicvoid setInserttime(Timestamp inserttime) {  
  115.         this.inserttime = inserttime;  
  116.     }  
  117.     public Timestamp getUpdatetime() {  
  118.         returnthis.updatetime;  
  119.     }  
  120.     publicvoid setUpdatetime(Timestamp updatetime) {  
  121.         this.updatetime = updatetime;  
  122.     }  
  123.     public Integer getOperateid() {  
  124.         returnthis.operateid;  
  125.     }  
  126.     publicvoid setOperateid(Integer operateid) {  
  127.         this.operateid = operateid;  
  128.     }  
  129. }  

二、jdbc.properties
  1. jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver  
  2. jdbc.url=jdbc:sqlserver://127.0.0.1:1433;databaseName=test
  3. jdbc.username=sa
  4. jdbc.password=admin@2013  
  5. jdbc.maxActive=50
  6. jdbc.maxIdle=10
  7. jdbc.maxWait=50
  8. jdbc.defaultAutoCommit=true

三、Spring配置檔案【beans.xml】
  1. <?xmlversion="1.0"encoding="GB18030"?>
  2. <beansxmlns="http://www.springframework.org/schema/beans"
  3.     xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p"
  4.     xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:aop="http://www.springframework.org/schema/aop"
  5.     xmlns:tx="http://www.springframework.org/schema/tx"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans    
  7.       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd    
  8.       http://www.springframework.org/schema/context    
  9.       http://www.springframework.org/schema/context/spring-context.xsd    
  10.       http://www.springframework.org/schema/aop  
  11.       http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  
  12.       http://www.springframework.org/schema/tx  
  13.       http://www.springframework.org/schema/tx/spring-tx-3.0.xsd  
  14.       http://www.springframework.org/schema/mvc    
  15.       http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"  
  16.     default-autowire="byName"default-lazy-init="true">
  17.     <!-- 屬性檔案讀入 -->
  18.     <beanid="propertyConfigurer"
  19.         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  20.         <propertyname="locations">
  21.             <list>
  22.                 <value>classpath*:config/*.properties</value>
  23.             </list>
  24.         </property>
  25.     </bean>
  26.     <!-- 資料來源定義,使用dbcp資料來源 -->
  27.     <beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close">
  28.         <propertyname="driverClassName"value="${jdbc.driverClassName}"></property>
  29.         <propertyname="url"value="${jdbc.url}"></property>
  30.         <propertyname="username"value="${jdbc.username}"></property>
  31.         <propertyname="password"value="${jdbc.password}"></property>
  32.         <propertyname="maxActive"value="${jdbc.maxActive}"></property>
  33.         <propertyname="maxIdle"value="${jdbc.maxIdle}"></property>
  34.         <propertyname="maxWait"value="${jdbc.maxWait}"></property>
  35.         <propertyname="defaultAutoCommit"value="${jdbc.defaultAutoCommit}"></property>
  36.     </bean>
  37.     <beanid="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate"abstract="false"
  38.         lazy-init="false"autowire="default">
  39.         <propertyname="dataSource">
  40.             <refbean="dataSource"/>
  41.         </property>
  42.     </bean>
  43.     <beanid="ormDao"class="com.orm.dao.impl.OrmDaoImpl">
  44.        <propertyname="template">
  45.           <refbean="jdbcTemplate"/>
  46.        </property>
  47.     </bean>
  48. </beans>

四、web.xml
  1. <?xmlversion="1.0"encoding="UTF-8"?>
  2. <web-appversion="2.5"xmlns="http://java.sun.com/xml/ns/javaee"
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  5.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
  6.     <!--  
  7.         Spring ApplicationContext配置檔案的路徑,可使用萬用字元,多個路徑用,號分隔  
  8.         此引數用於後面的Spring-Context loader  
  9.     -->
  10.     <context-param>
  11.         <param-name>contextConfigLocation</param-name>
  12.         <param-value>classpath*:spring/*.xml</param-value>
  13.     </context-param>
  14.     <!--Spring ApplicationContext 載入 -->
  15.     <listener>
  16.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  17.     </listener>
  18.     <!-- 著名 Character Encoding filter -->
  19.     <filter>
  20.         <filter-name>encodingFilter</filter-name>
  21.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
  22.         <init-param>
  23.             <param-name>encoding</param-name>
  24.             <param-value>GBK</param-value>
  25.         </init-param>
  26.     </filter>
  27.     <!-- Spring 重新整理Introspector防止記憶體洩露 -->
  28.     <listener>
  29.         <listener-class>
  30.             org.springframework.web.util.IntrospectorCleanupListener</listener-class>
  31.     </listener>
  32.     <!-- 
  33.         session超時定義,單位為分鐘,清除服務端我們儲存在Session中的物件,不清除Tomcat容器儲存在Session中的物件 
  34.     -->
  35.     <session-config>
  36.         <session-timeout>30</session-timeout>
  37.     </session-config>
  38. </web-app>

五、資料庫訪問介面【OrmDao.java】
  1. package com.orm.dao;  
  2. import java.util.List;  
  3. import java.util.Map;  
  4. import com.orm.dto.AreaDto;  
  5. import com.orm.dto.BuildingDto;  
  6. import com.orm.dto.FloorDto;  
  7. import com.orm.dto.StoreDto;  
  8. publicinterface OrmDao {  
  9.     public List<AreaDto> getAreaDtos();  
  10.     public List<AreaDto> getAreaDtos1();  
  11.     public Map<String, Object> getBuilds();  
  12.     public Map<String, Object> getFloors(String build);  
  13.     public Map<String, Object> getAreas(String build, String floor);  
  14.     public List<StoreDto> getStoreDtos(int buildid, int floorid, int areaid);  
  15.     public List<BuildingDto> getBuildingDto();  
  16.     public List<FloorDto> getFloorDtos(int buildid);  
  17.     public List<AreaDto> getAreaDto(int buildid, int floorid);  
  18.     public AreaDto getAreaDto(int id);  
  19.     public BuildingDto getBuildingDto(int buildId);  
  20.     public FloorDto getFloorDto(int floorId);  
  21.     public List<StoreDto> getAllStores();  
  22.     public String storeName(int storeId);  
  23.     public StoreDto getStoreById(int storeId);  
  24.     publicint getCountStore();  
  25.     publicvoid saveBuild(BuildingDto buildingDto);  
  26.     publicvoid deleteBuildById(int buildid);  
  27.     publicvoid updateBuildById(BuildingDto buildingDto);  
  28. }  

六、資料庫訪問介面的實現類【OrmDaoImpl.java】
  1. package com.orm.dao.impl;  
  2. import java.sql.ResultSet;  
  3. import java.sql.SQLException;  
  4. import java.util.HashMap;  
  5. import java.util.LinkedHashMap;  
  6. import java.util.List;  
  7. import java.util.Map;  
  8. import org.springframework.jdbc.core.BeanPropertyRowMapper;  
  9. import org.springframework.jdbc.core.JdbcTemplate;  
  10. import org.springframework.jdbc.core.RowMapper;  
  11. import com.orm.dao.OrmDao;  
  12. import com.orm.dto.AreaDto;  
  13. import com.orm.dto.BuildingDto;  
  14. import com.orm.dto.FloorDto;  
  15. import com.orm.dto.StoreDto;  
  16. @SuppressWarnings({ "unchecked""rawtypes" })  
  17. publicclass OrmDaoImpl implements OrmDao {  
  18.     private JdbcTemplate template;  
  19.     public JdbcTemplate getTemplate() {  
  20.         return template;  
  21.     }  
  22.     publicvoid setTemplate(JdbcTemplate template) {  
  23.         this.template = template;  
  24.     }  
  25.     public List<AreaDto> getAreaDtos() {  
  26.         String sql = "select * from t_area ";  
  27.         return (List<AreaDto>) template.query(sql, new BeanPropertyRowMapper(AreaDto.class));  
  28.     }  
  29.     public List<AreaDto> getAreaDtos1() {  
  30.         String sql = "select * from t_area ";  
  31.         return (List<AreaDto>) template.query(sql, new AreaRowMapper());  
  32.     }  
  33.     public Map<String, Object> getBuilds() {  
  34.         String sql = "select buildid,buildname from t_building ";  
  35.         List<BuildingDto> list = this.template.query(sql, new BeanPropertyRowMapper(BuildingDto.class));  
  36.         Map<String, Object> map = <