Spring使用JdbcTemplate實現對資料庫操作 (內部類定義RowMapper)
阿新 • • 發佈:2019-01-14
http://blog.csdn.net/wyc_cs/article/details/37766221
Spring對資料庫的操作使用JdbcTemplate來封裝JDBC,結合Spring的注入特性可以很方便的實現對資料庫的訪問操作。
使用JdbcTemplate可以像JDBC一樣來編寫資料庫的操作程式碼,與hibernate相比對SQL語句的控制上會更靈活,下面以一個例子來講解JdbcTemplate的使用及相應的API。
一、實體Bean
- package com.orm.dto;
- import java.sql.Timestamp;
- publicclass AreaDto implements
- privatestaticfinallong serialVersionUID = 1L;
- private Integer areaid;
- private String area_name;
- private String area_detail;
- private Integer floor_id;
- private Integer build_id;
- private String region_name;
- private String sortno;
- private
- private Timestamp update_time;
- private Integer operate_id;
- public AreaDto() {
- }
- public AreaDto(Integer areaid) {
- this.areaid = areaid;
- }
- public Integer getAreaid() {
- return areaid;
- }
- publicvoid setAreaid(Integer areaid) {
- this.areaid = areaid;
- }
- public String getArea_name() {
- return area_name;
- }
- publicvoid setArea_name(String area_name) {
- this.area_name = area_name;
- }
- public String getArea_detail() {
- return area_detail;
- }
- publicvoid setArea_detail(String area_detail) {
- this.area_detail = area_detail;
- }
- public Integer getFloor_id() {
- return floor_id;
- }
- publicvoid setFloor_id(Integer floor_id) {
- this.floor_id = floor_id;
- }
- public Integer getBuild_id() {
- return build_id;
- }
- publicvoid setBuild_id(Integer build_id) {
- this.build_id = build_id;
- }
- public String getRegion_name() {
- return region_name;
- }
- publicvoid setRegion_name(String region_name) {
- this.region_name = region_name;
- }
- public String getSortno() {
- return sortno;
- }
- publicvoid setSortno(String sortno) {
- this.sortno = sortno;
- }
- public Timestamp getInsert_time() {
- return insert_time;
- }
- publicvoid setInsert_time(Timestamp insert_time) {
- this.insert_time = insert_time;
- }
- public Timestamp getUpdate_time() {
- return update_time;
- }
- publicvoid setUpdate_time(Timestamp update_time) {
- this.update_time = update_time;
- }
- public Integer getOperate_id() {
- return operate_id;
- }
- publicvoid setOperate_id(Integer operate_id) {
- this.operate_id = operate_id;
- }
- }
- package com.orm.dto;
- import java.sql.Timestamp;
- publicclass BuildingDto implements java.io.Serializable {
- privatestaticfinallong serialVersionUID = 1L;
- private Integer buildid;
- private String buildname;
- private String detail;
- private String sortno;
- private Timestamp insertTime;
- private Timestamp updateTime;
- private Integer operateId;
- public BuildingDto() {
- }
- public BuildingDto(Integer buildid) {
- this.buildid = buildid;
- }
- public BuildingDto(Integer buildid, String buildname, String detail, String sortno, Timestamp insertTime,
- Timestamp updateTime, Integer operateId) {
- this.buildid = buildid;
- this.buildname = buildname;
- this.detail = detail;
- this.sortno = sortno;
- this.insertTime = insertTime;
- this.updateTime = updateTime;
- this.operateId = operateId;
- }
- public Integer getBuildid() {
- returnthis.buildid;
- }
- publicvoid setBuildid(Integer buildid) {
- this.buildid = buildid;
- }
- public String getBuildname() {
- returnthis.buildname;
- }
- publicvoid setBuildname(String buildname) {
- this.buildname = buildname;
- }
- public String getDetail() {
- returnthis.detail;
- }
- publicvoid setDetail(String detail) {
- this.detail = detail;
- }
- public String getSortno() {
- returnthis.sortno;
- }
- publicvoid setSortno(String sortno) {
- this.sortno = sortno;
- }
- public Timestamp getInsertTime() {
- returnthis.insertTime;
- }
- publicvoid setInsertTime(Timestamp insertTime) {
- this.insertTime = insertTime;
- }
- public Timestamp getUpdateTime() {
- returnthis.updateTime;
- }
- publicvoid setUpdateTime(Timestamp updateTime) {
- this.updateTime = updateTime;
- }
- public Integer getOperateId() {
- returnthis.operateId;
- }
- publicvoid setOperateId(Integer operateId) {
- this.operateId = operateId;
- }
- }
- package com.orm.dto;
- import java.sql.Timestamp;
- publicclass FloorDto implements java.io.Serializable {
- privatestaticfinallong serialVersionUID = 1L;
- private Integer floorid;
- private String floorname;
- private Integer floor;
- private String detail;
- private Integer buildId;
- private String sortno;
- private Timestamp insertTime;
- private Timestamp updateTime;
- private Integer operateId;
- public FloorDto() {
- }
- public FloorDto(Integer floorid) {
- this.floorid = floorid;
- }
- public Integer getFloorid() {
- returnthis.floorid;
- }
- publicvoid setFloorid(Integer floorid) {
- this.floorid = floorid;
- }
- public String getFloorname() {
- returnthis.floorname;
- }
- publicvoid setFloorname(String floorname) {
- this.floorname = floorname;
- }
- public String getDetail() {
- returnthis.detail;
- }
- publicvoid setDetail(String detail) {
- this.detail = detail;
- }
- public Integer getBuildId() {
- returnthis.buildId;
- }
- publicvoid setBuildId(Integer buildId) {
- this.buildId = buildId;
- }
- public String getSortno() {
- returnthis.sortno;
- }
- publicvoid setSortno(String sortno) {
- this.sortno = sortno;
- }
- public Timestamp getInsertTime() {
- returnthis.insertTime;
- }
- publicvoid setInsertTime(Timestamp insertTime) {
- this.insertTime = insertTime;
- }
- public Timestamp getUpdateTime() {
- returnthis.updateTime;
- }
- publicvoid setUpdateTime(Timestamp updateTime) {
- this.updateTime = updateTime;
- }
- public Integer getOperateId() {
- returnthis.operateId;
- }
- publicvoid setOperateId(Integer operateId) {
- this.operateId = operateId;
- }
- public Integer getFloor() {
- return floor;
- }
- publicvoid setFloor(Integer floor) {
- this.floor = floor;
- }
- }
- package com.orm.dto;
- import java.sql.Timestamp;
- publicclass StoreDto implements java.io.Serializable {
- privatestaticfinallong serialVersionUID = 1L;
- private Integer id;
- private String storename;
- private String storenameen;
- private String storeno;
- private Integer build_Id;
- private Integer floor_Id;
- private Integer area_Id;
- private Integer type_Id;
- private Integer point_Id;
- private String storeowner;
- private String area;
- private String remark;
- private String status;
- private String sortno;
- private Timestamp inserttime;
- private Timestamp updatetime;
- private Integer operateid;
- public StoreDto() {
- }
- public StoreDto(Integer id) {
- this.id = id;
- }
- public Integer getId() {
- returnthis.id;
- }
- publicvoid setId(Integer id) {
- this.id = id;
- }
- public String getStorename() {
- returnthis.storename;
- }
- publicvoid setStorename(String storename) {
- this.storename = storename;
- }
- public String getStorenameen() {
- returnthis.storenameen;
- }
- publicvoid setStorenameen(String storenameen) {
- this.storenameen = storenameen;
- }
- public String getStoreno() {
- returnthis.storeno;
- }
- publicvoid setStoreno(String storeno) {
- this.storeno = storeno;
- }
- public Integer getBuild_Id() {
- returnthis.build_Id;
- }
- publicvoid setBuild_Id(Integer build_Id) {
- this.build_Id = build_Id;
- }
- public Integer getFloor_Id() {
- returnthis.floor_Id;
- }
- publicvoid setFloor_Id(Integer floor_Id) {
- this.floor_Id = floor_Id;
- }
- public Integer getArea_Id() {
- returnthis.area_Id;
- }
- publicvoid setArea_Id(Integer area_Id) {
- this.area_Id = area_Id;
- }
- public Integer getType_Id() {
- returnthis.type_Id;
- }
- publicvoid setType_Id(Integer type_Id) {
- this.type_Id = type_Id;
- }
- public Integer getPoint_Id() {
- returnthis.point_Id;
- }
- publicvoid setPoint_Id(Integer point_Id) {
- this.point_Id = point_Id;
- }
- public String getStoreowner() {
- returnthis.storeowner;
- }
- publicvoid setStoreowner(String storeowner) {
- this.storeowner = storeowner;
- }
- public String getArea() {
- returnthis.area;
- }
- publicvoid setArea(String area) {
- this.area = area;
- }
- public String getRemark() {
- returnthis.remark;
- }
- publicvoid setRemark(String remark) {
- this.remark = remark;
- }
- public String getStatus() {
- returnthis.status;
- }
- publicvoid setStatus(String status) {
- this.status = status;
- }
- public String getSortno() {
- returnthis.sortno;
- }
- publicvoid setSortno(String sortno) {
- this.sortno = sortno;
- }
- public Timestamp getInserttime() {
- returnthis.inserttime;
- }
- publicvoid setInserttime(Timestamp inserttime) {
- this.inserttime = inserttime;
- }
- public Timestamp getUpdatetime() {
- returnthis.updatetime;
- }
- publicvoid setUpdatetime(Timestamp updatetime) {
- this.updatetime = updatetime;
- }
- public Integer getOperateid() {
- returnthis.operateid;
- }
- publicvoid setOperateid(Integer operateid) {
- this.operateid = operateid;
- }
- }
二、jdbc.properties
- jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
- jdbc.url=jdbc:sqlserver://127.0.0.1:1433;databaseName=test
- jdbc.username=sa
- jdbc.password=admin@2013
- jdbc.maxActive=50
- jdbc.maxIdle=10
- jdbc.maxWait=50
- jdbc.defaultAutoCommit=true
三、Spring配置檔案【beans.xml】
- <?xmlversion="1.0"encoding="GB18030"?>
- <beansxmlns="http://www.springframework.org/schema/beans"
- xmlns:context="http://www.springframework.org/schema/context"xmlns:p="http://www.springframework.org/schema/p"
- xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:tx="http://www.springframework.org/schema/tx"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
- http://www.springframework.org/schema/mvc
- http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"
- default-autowire="byName"default-lazy-init="true">
- <!-- 屬性檔案讀入 -->
- <beanid="propertyConfigurer"
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <propertyname="locations">
- <list>
- <value>classpath*:config/*.properties</value>
- </list>
- </property>
- </bean>
- <!-- 資料來源定義,使用dbcp資料來源 -->
- <beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource"destroy-method="close">
- <propertyname="driverClassName"value="${jdbc.driverClassName}"></property>
- <propertyname="url"value="${jdbc.url}"></property>
- <propertyname="username"value="${jdbc.username}"></property>
- <propertyname="password"value="${jdbc.password}"></property>
- <propertyname="maxActive"value="${jdbc.maxActive}"></property>
- <propertyname="maxIdle"value="${jdbc.maxIdle}"></property>
- <propertyname="maxWait"value="${jdbc.maxWait}"></property>
- <propertyname="defaultAutoCommit"value="${jdbc.defaultAutoCommit}"></property>
- </bean>
- <beanid="jdbcTemplate"class="org.springframework.jdbc.core.JdbcTemplate"abstract="false"
- lazy-init="false"autowire="default">
- <propertyname="dataSource">
- <refbean="dataSource"/>
- </property>
- </bean>
- <beanid="ormDao"class="com.orm.dao.impl.OrmDaoImpl">
- <propertyname="template">
- <refbean="jdbcTemplate"/>
- </property>
- </bean>
- </beans>
四、web.xml
- <?xmlversion="1.0"encoding="UTF-8"?>
- <web-appversion="2.5"xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
- <!--
- Spring ApplicationContext配置檔案的路徑,可使用萬用字元,多個路徑用,號分隔
- 此引數用於後面的Spring-Context loader
- -->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath*:spring/*.xml</param-value>
- </context-param>
- <!--Spring ApplicationContext 載入 -->
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <!-- 著名 Character Encoding filter -->
- <filter>
- <filter-name>encodingFilter</filter-name>
- <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
- <init-param>
- <param-name>encoding</param-name>
- <param-value>GBK</param-value>
- </init-param>
- </filter>
- <!-- Spring 重新整理Introspector防止記憶體洩露 -->
- <listener>
- <listener-class>
- org.springframework.web.util.IntrospectorCleanupListener</listener-class>
- </listener>
- <!--
- session超時定義,單位為分鐘,清除服務端我們儲存在Session中的物件,不清除Tomcat容器儲存在Session中的物件
- -->
- <session-config>
- <session-timeout>30</session-timeout>
- </session-config>
- </web-app>
五、資料庫訪問介面【OrmDao.java】
- package com.orm.dao;
- import java.util.List;
- import java.util.Map;
- import com.orm.dto.AreaDto;
- import com.orm.dto.BuildingDto;
- import com.orm.dto.FloorDto;
- import com.orm.dto.StoreDto;
- publicinterface OrmDao {
- public List<AreaDto> getAreaDtos();
- public List<AreaDto> getAreaDtos1();
- public Map<String, Object> getBuilds();
- public Map<String, Object> getFloors(String build);
- public Map<String, Object> getAreas(String build, String floor);
- public List<StoreDto> getStoreDtos(int buildid, int floorid, int areaid);
- public List<BuildingDto> getBuildingDto();
- public List<FloorDto> getFloorDtos(int buildid);
- public List<AreaDto> getAreaDto(int buildid, int floorid);
- public AreaDto getAreaDto(int id);
- public BuildingDto getBuildingDto(int buildId);
- public FloorDto getFloorDto(int floorId);
- public List<StoreDto> getAllStores();
- public String storeName(int storeId);
- public StoreDto getStoreById(int storeId);
- publicint getCountStore();
- publicvoid saveBuild(BuildingDto buildingDto);
- publicvoid deleteBuildById(int buildid);
- publicvoid updateBuildById(BuildingDto buildingDto);
- }
六、資料庫訪問介面的實現類【OrmDaoImpl.java】
- package com.orm.dao.impl;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.util.HashMap;
- import java.util.LinkedHashMap;
- import java.util.List;
- import java.util.Map;
- import org.springframework.jdbc.core.BeanPropertyRowMapper;
- import org.springframework.jdbc.core.JdbcTemplate;
- import org.springframework.jdbc.core.RowMapper;
- import com.orm.dao.OrmDao;
- import com.orm.dto.AreaDto;
- import com.orm.dto.BuildingDto;
- import com.orm.dto.FloorDto;
- import com.orm.dto.StoreDto;
- @SuppressWarnings({ "unchecked", "rawtypes" })
- publicclass OrmDaoImpl implements OrmDao {
- private JdbcTemplate template;
- public JdbcTemplate getTemplate() {
- return template;
- }
- publicvoid setTemplate(JdbcTemplate template) {
- this.template = template;
- }
- public List<AreaDto> getAreaDtos() {
- String sql = "select * from t_area ";
- return (List<AreaDto>) template.query(sql, new BeanPropertyRowMapper(AreaDto.class));
- }
- public List<AreaDto> getAreaDtos1() {
- String sql = "select * from t_area ";
- return (List<AreaDto>) template.query(sql, new AreaRowMapper());
- }
- public Map<String, Object> getBuilds() {
- String sql = "select buildid,buildname from t_building ";
- List<BuildingDto> list = this.template.query(sql, new BeanPropertyRowMapper(BuildingDto.class));
- Map<String, Object> map = <