本文内容:
根据上篇文章,搭建简单的 spring mvc web service ,引入数据库操作,通过浏览器 uri 定位 controller 访问修改数据库内容
1、安装 MySQL Server 5.6 。选择 Custom ,只选择 MySQL Server ,指定软件位置和数据存储位置,我的位置如下:
配置信息, mysql56、mysql、mysql ,用户暂时不用添加,端口默认的 3306 即可。安装完成后,开始菜单中找到如下位置
点击上面的命令提示符,提示输入密码,我们没有修改过,所以输入 mysql ,继续输入 show databases; 显示存在的数据库,有 mysql、test 等等,表示安装成功。
开启和关闭 MySQL Server 的方法(共有两种方式):
(1)需要以管理员身份运行命令提示符, cd 到 F:\Software\MySQL\MySQL Server 5.6\bin 目录下,执行 mysqld.exe -install ,成功后会显示 Service successfully installed. 这样就可以通过 “运行” 或者 “命令提示符” 输入 net start mysql56 和 net stop mysql56 来开启和关闭 MySQL Server 了。
(2)(开始 -> 搜索 “服务” || “运行” services.msc || 控制面板 -> 服务)找到 MySQL56 手动开启或者关闭。
注:要先关闭 mysql 服务 net stop mysql,打开 mysql56 服务 net start mysql56 才行。
2、安装 Navicat for MySQL 11.1.6 。连接 MySQL 连接名 test-connect ,主机名 localhost ,端口3306 ,用户名 root ,密码 mysql 。连接测试,确定。双击连接名即可打开连接,可以添加用户、添加用户权限、添加数据库、修改等等操作。如果双击提示失败,可能是 MySQL Server 没有打开。
注:Navicat 更简单方便一些,而用 MySQL Workbench 更好,功能更多一些。
3、工程配置
(1) 配置 pom.xml 文件,引入数据库驱动 .jar 包,将下面的代码添加到 pom.xml 文件中的 <dependencies>___</dependencies> 里面。

1 <!-- DataBase Driver --> 2 <!-- MySQL --> 3 <dependency> 4 <groupId>mysql</groupId> 5 <artifactId>mysql-connector-java</artifactId> 6 <version>5.1.25</version> 7 </dependency> 8 9 <dependency> 10 <groupId>com.mchange</groupId> 11 <artifactId>c3p0</artifactId> 12 <version>0.9.5-pre3</version> 13 </dependency>
(2) 建立 database.properties 文件,放在 resources 下面,用来配置数据库信息。项目工程名 -> Java Resources -> src/main/resources -> 右键 -> New -> Class -> 建立 java 文件,命名为 database.java ,然后将其重命名为 database.properties 。里面输入数据库的配置信息,如下:
注: user 和 password 一定要写对,而且后面不能带有空格,否则会连接不上。

1 driverClass=com.mysql.jdbc.Driver 2 #jdbcUrl=jdbc:mysql://localhost:3306/my_test_database?useUnicode=true&characterEncoding=UTF-8 3 jdbcUrl=jdbc:mysql://127.0.0.1:3306/my_test_database?useUnicode=true&characterEncoding=UTF-8 4 user=root 5 password=mysql 6 maxPoolSize=100 7 minPoolSize=1 8 initialPoolSize=1 9 testConnectionOnCheckin=true 10 maxIdleTime=25000 11 acquireIncrement=1 12 acquireRetryAttempts=30 13 acquireRetryDelay=1000 14 automaticTestTable=t_c3p0 15 idleConnectionTestPeriod=18000 16 checkoutTimeout=5000
注:要打开 MySQL Server ,并在 Navicat 中建立一个测试数据库,my_test_database,运行如下 sql ,建立一个表,插入四条数据。

1 drop database if exists my_test_database; 2 3 create database my_test_database; 4 5 use my_test_database; 6 7 create table my_test_table(number int not null, name varchar(40), score int, primary key(number)); 8 9 insert into my_test_table(number, name, score) values(1001, "Match", 91); 10 insert into my_test_table(number, name, score) values(1002, "Tom", 92); 11 insert into my_test_table(number, name, score) values(1003, "Slina", 93); 12 insert into my_test_table(number, name, score) values(1004, "Ally", 91);
(3) 配置 applicationContext.xml 文件。将下面的代码添加到此文件中,用来配置数据库。

1 <!-- 配置文件 --> 2 <bean id="proConfig" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> 3 <property name="locations"> 4 <list> 5 <value>classpath*:database.properties</value> 6 </list> 7 </property> 8 </bean> 9 10 <!--MySQL Database--> 11 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 12 destroy-method="close"> 13 <property name="driverClass" value="#{proConfig.driverClass}"/> 14 <property name="jdbcUrl" value="#{proConfig.jdbcUrl}"/> 15 <property name="user" value="#{proConfig.user}"/> 16 <property name="password" value="#{proConfig.password}"/> 17 <property name="maxPoolSize" value="#{proConfig.maxPoolSize}"/> 18 <property name="minPoolSize" value="#{proConfig.minPoolSize}"/> 19 <property name="initialPoolSize" value="#{proConfig.initialPoolSize}"/> 20 <property name="testConnectionOnCheckin" value="#{proConfig.testConnectionOnCheckin}"/> 21 <property name="maxIdleTime" value="#{proConfig.maxIdleTime}"/> 22 <property name="acquireIncrement" value="#{proConfig.acquireIncrement}"/> 23 <property name="acquireRetryAttempts" value="#{proConfig.acquireRetryAttempts}"/> 24 <property name="acquireRetryDelay" value="#{proConfig.acquireRetryDelay}"/> 25 <property name="automaticTestTable" value="#{proConfig.automaticTestTable}"/> 26 <property name="idleConnectionTestPeriod" value="#{proConfig.idleConnectionTestPeriod}"/> 27 <property name="checkoutTimeout" value="#{proConfig.checkoutTimeout}"/> 28 </bean> 29 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 30 <property name="dataSource" ref="dataSource"/> 31 </bean> 32 <bean id="transactionManager" 33 class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 34 <property name="dataSource" ref="dataSource"/> 35 </bean>
4、代码修改
(1) 建立 dao 包,用来存放数据库操作类,在 dao 包下面建立一个 interface 类 mydao.java ,代码如下:

1 package dao; 2 3 import java.util.List; 4 5 public interface mydao { 6 7 public List<String> findNameByScore(int score); 8 9 }
(2) 在 dao 包下面建立 impl 包,在 impl 包下面建立一个类 mydaoImpl.java ,它扩展 JdbcDaoSupport ,并实现 mydao ,代码如下:

1 package dao.impl; 2 3 import java.sql.ResultSet; 4 import java.sql.SQLException; 5 import java.util.List; 6 7 import org.springframework.jdbc.core.RowMapper; 8 import org.springframework.jdbc.core.support.JdbcDaoSupport; 9 10 import dao.mydao; 11 12 public class mydaoImpl extends JdbcDaoSupport implements mydao { 13 14 public mydaoImpl() 15 { 16 17 } 18 19 @SuppressWarnings({ "unchecked", "rawtypes" }) 20 @Override 21 public List<String> findNameByScore(int score) 22 { 23 String sql = "select name from my_test_table where score=" + score; 24 25 return this.getJdbcTemplate().queryForList(sql, String.class); 26 27 /* 28 return this.getJdbcTemplate().query(sql, new RowMapper() 29 { 30 @Override 31 public Object mapRow(ResultSet rs, int rowNum) throws SQLException 32 { 33 return rs.getString("name"); 34 } 35 }); 36 */ 37 38 } 39 }
上面例子只实现了查询,下面给出插入、更新、删除操作的例子,作为参考,不修改进本工程。

1 package dao.impl; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sql.ResultSet; 6 import java.sql.SQLException; 7 import java.util.List; 8 9 import org.springframework.jdbc.core.PreparedStatementCreator; 10 import org.springframework.jdbc.core.RowMapper; 11 import org.springframework.jdbc.core.support.JdbcDaoSupport; 12 13 import dao.mydao; 14 15 public class mydaoImpl extends JdbcDaoSupport implements mydao { 16 17 public mydaoImpl() 18 { 19 20 } 21 22 @SuppressWarnings({ "unchecked", "rawtypes" }) 23 @Override 24 public List<String> findNameByScore(int score) 25 { 26 String sql = "select name from my_test_table where score=" + score; 27 28 //select (1) 29 List<String> list1 = this.getJdbcTemplate().queryForList(sql, String.class); 30 31 //select (2) 32 /* 33 List<String> list2 = 34 this.getJdbcTemplate().query(sql, new RowMapper() 35 { 36 @Override 37 public Object mapRow(ResultSet rs, int rowNum) throws SQLException 38 { 39 return rs.getString("name"); 40 } 41 }); 42 */ 43 44 return list1; 45 } 46 47 @Override 48 public int insertData(int number, String name, int score) 49 { 50 //insert 要先查重,此处未作处理 51 String sql = "insert into my_test_table(number, name, score) values(?, ?, ?)"; 52 53 return this.getJdbcTemplate().update(sql, new Object[] {number, name, score}); 54 55 56 //String sql2 = "insert into ......"; 57 //this.getJdbcTemplate().execute(sql2); 58 //return 1; 59 60 61 /* 62 return this.getJdbcTemplate().update(new PreparedStatementCreator() 63 { 64 @Override 65 public PreparedStatement createPreparedStatement(Connection con) throws SQLException 66 { 67 PreparedStatement ps = con.prepareStatement(sql); 68 ps.setInt(1, number); 69 ps.setString(2, name); 70 ps.setInt(3, score); 71 return ps; 72 } 73 }); 74 */ 75 } 76 77 @Override 78 public int updateData(int number, String name, int score) 79 { 80 //update 81 String sql = "update my_test_table set name = \"" + name + "\" , score = " + score + " where number = " + number; 82 83 return this.getJdbcTemplate().update(sql); 84 } 85 86 @Override 87 public int deleteData(int number) 88 { 89 //delete 90 String sql = "delete from my_test_table where number = " + number; 91 92 return this.getJdbcTemplate().update(sql); 93 } 94 }
(3) 添加 spring-dao.xml 文件,工程目录 -> Java Resources -> src/main/config -> 右键 -> New -> Other -> 建立 xml 文件,输入如下代码:

1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 6 <bean id="myDao" class="dao.impl.mydaoImpl"> 7 <property name="dataSource" ref="dataSource" /> 8 </bean> 9 10 </beans>
(4) 修改 web.xml 文件,只需将新建立的 spring-dao.xml 这个配置文件加入到环境参数中即可,将 classpath*:spring-dao.xml 这行语句添加到 web.xml 文件中的 <context-param> 下面的 <param-value> 里面即可,完成后, web.xml 部分信息如下:

1 <context-param> 2 <param-name>contextConfigLocation</param-name> 3 <param-value> 4 classpath*:applicationContext.xml, 5 classpath*:spring-api.xml, 6 classpath*:spring-dao.xml 7 </param-value> 8 </context-param>
(5) 修改 controller.java 文件,添加 mydao 类型的属性,新增 public String getNameList() 方法,用来从数据库读取值,并回显给浏览器用户

1 @Autowired 2 private mydao testDao;

1 @RequestMapping(value="/test3", method=RequestMethod.GET) 2 @ResponseStatus(HttpStatus.OK) 3 @ResponseBody 4 public String getNameList() 5 { 6 String str = "pre___" + "\n"; 7 8 List<String> list = this.testDao.findNameByScore(91); 9 10 for(int i=0; i<list.size(); i++) 11 { 12 str += list.get(i); 13 str += " "; 14 } 15 16 return str; 17 }
5、发布运行。正常情况下,点击运行, maven 会自动管理下载 mysql 的驱动包,一段时间后, Tomcat 服务器成功运行。
打开浏览器,输入 http://localhost:8080/TestServer4/myapi/controller/test3 ,浏览器中会出现 pre___ Match Ally ,表示成功从数据库中读取到 score=91 的所有成员的名字,并将他们连接成一个字符串,中间用空格隔开。其中 pre___ 是预定的内容, Match 和 Ally 是数据库中的内容。至此表示成功从数据库读取到数据。
如上篇所述,用同样方法,是另外一台电脑能访问到本机,比如浏览器输入 http://192.168.1.105:8080/TestServer4/myapi/controller/test3 ,浏览器依然返回 pre___ Match Ally ,表示完全成功。
注:如果浏览器出现异常信息,表示操作失败,需根据异常信息进行判断哪里出现问题。请确保按照上面步骤进行操作,此片实例建立在前两篇(第一篇搭建环境,第二篇编写代码和配置文件,此篇是数据库的搭建及与工程的连接)的基础之上。一些常见的小问题:比如 database.properties 里面的信息, user 或 password 后面跟了多余的空格。
6、完整的工程。将此工程的目录、类、配置信息完整附上。
(1) 工程的目录如下:
(2) .java 文件

1 package com.matchbox; 2 3 import java.io.IOException; 4 import java.io.PrintWriter; 5 import java.util.List; 6 7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.http.HttpServletResponse; 9 10 import org.springframework.beans.factory.annotation.Autowired; 11 import org.springframework.http.HttpStatus; 12 import org.springframework.stereotype.Controller; 13 import org.springframework.web.bind.annotation.RequestMapping; 14 import org.springframework.web.bind.annotation.RequestMethod; 15 import org.springframework.web.bind.annotation.ResponseBody; 16 import org.springframework.web.bind.annotation.ResponseStatus; 17 18 import dao.mydao; 19 20 @Controller 21 @RequestMapping("/controller") 22 public class controller { 23 24 @Autowired 25 private mydao testDao; 26 27 @RequestMapping(value="/test1", method=RequestMethod.GET) 28 @ResponseStatus(HttpStatus.OK) 29 @ResponseBody 30 public String doShow() 31 { 32 System.out.println("abc"); 33 return "ABC"; 34 } 35 36 @RequestMapping(value="/test2", method=RequestMethod.GET) 37 public void hello(HttpServletRequest request, HttpServletResponse response) throws IOException 38 { 39 response.setContentType("text/html;charset=GB2312"); 40 41 PrintWriter out = response.getWriter(); 42 43 out.println("<html><head><title>Result</title></head> <body><b> LT's Home Server From Controller </b></body></html>"); 44 out.close(); 45 } 46 47 @RequestMapping(value="/test3", method=RequestMethod.GET) 48 @ResponseStatus(HttpStatus.OK) 49 @ResponseBody 50 public String getNameList() 51 { 52 String str = "pre___" + "\n"; 53 54 List<String> list = this.testDao.findNameByScore(91); 55 56 for(int i=0; i<list.size(); i++) 57 { 58 str += list.get(i); 59 str += " "; 60 } 61 62 return str; 63 } 64 }

1 package dao; 2 3 import java.util.List; 4 5 public interface mydao { 6 7 public List<String> findNameByScore(int score); 8 9 }

1 package dao.impl; 2 3 import java.sql.ResultSet; 4 import java.sql.SQLException; 5 import java.util.List; 6 7 import org.springframework.jdbc.core.RowMapper; 8 import org.springframework.jdbc.core.support.JdbcDaoSupport; 9 10 import dao.mydao; 11 12 public class mydaoImpl extends JdbcDaoSupport implements mydao { 13 14 public mydaoImpl() 15 { 16 17 } 18 19 @SuppressWarnings({ "unchecked", "rawtypes" }) 20 @Override 21 public List<String> findNameByScore(int score) 22 { 23 String sql = "select name from my_test_table where score=" + score; 24 25 return this.getJdbcTemplate().queryForList(sql, String.class); 26 27 /* 28 return this.getJdbcTemplate().query(sql, new RowMapper() 29 { 30 @Override 31 public Object mapRow(ResultSet rs, int rowNum) throws SQLException 32 { 33 return rs.getString("name"); 34 } 35 }); 36 */ 37 38 } 39 }
(3) .xml 文件

1 <web-app xmlns="http://java.sun.com/xml/ns/javaee" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 4 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 5 version="2.5"> 6 7 <display-name>Archetype Created Web Application</display-name> 8 9 <listener> 10 <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class> 11 </listener> 12 13 14 <context-param> 15 <param-name>contextConfigLocation</param-name> 16 <param-value> 17 classpath*:applicationContext.xml, 18 classpath*:spring-api.xml, 19 classpath*:spring-dao.xml 20 </param-value> 21 </context-param> 22 23 24 <servlet> 25 <servlet-name>dispatcher</servlet-name> 26 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 27 <init-param> 28 <param-name>contextConfigLocation</param-name> 29 <param-value>classpath*:spring-api.xml</param-value> 30 </init-param> 31 <load-on-startup>1</load-on-startup> 32 </servlet> 33 34 <servlet-mapping> 35 <servlet-name>dispatcher</servlet-name> 36 <url-pattern>/myapi/*</url-pattern> 37 </servlet-mapping> 38 39 40 <listener> 41 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 42 </listener> 43 44 45 <welcome-file-list> 46 <welcome-file>index.jsp</welcome-file> 47 </welcome-file-list> 48 49 </web-app>

1 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 3 <modelVersion>4.0.0</modelVersion> 4 <groupId>com.matchbox.test</groupId> 5 <artifactId>TestServer4</artifactId> 6 <packaging>war</packaging> 7 <version>0.0.1-SNAPSHOT</version> 8 <name>TestServer4 Maven Webapp</name> 9 <url>http://maven.apache.org</url> 10 11 <properties> 12 <org.springframework.version>3.2.5.RELEASE</org.springframework.version> 13 </properties> 14 15 <dependencies> 16 <!-- spring --> 17 <dependency> 18 <groupId>org.springframework</groupId> 19 <artifactId>spring-core</artifactId> 20 <version>${org.springframework.version}</version> 21 </dependency> 22 <dependency> 23 <groupId>org.springframework</groupId> 24 <artifactId>spring-beans</artifactId> 25 <version>${org.springframework.version}</version> 26 </dependency> 27 <dependency> 28 <groupId>org.springframework</groupId> 29 <artifactId>spring-expression</artifactId> 30 <version>${org.springframework.version}</version> 31 </dependency> 32 <dependency> 33 <groupId>org.springframework</groupId> 34 <artifactId>spring-context-support</artifactId> 35 <version>${org.springframework.version}</version> 36 </dependency> 37 <dependency> 38 <groupId>org.springframework</groupId> 39 <artifactId>spring-context</artifactId> 40 <version>${org.springframework.version}</version> 41 </dependency> 42 43 <dependency> 44 <groupId>org.springframework</groupId> 45 <artifactId>spring-jdbc</artifactId> 46 <version>${org.springframework.version}</version> 47 </dependency> 48 <dependency> 49 <groupId>org.springframework</groupId> 50 <artifactId>spring-orm</artifactId> 51 <version>${org.springframework.version}</version> 52 </dependency> 53 <dependency> 54 <groupId>org.springframework</groupId> 55 <artifactId>spring-oxm</artifactId> 56 <version>${org.springframework.version}</version> 57 </dependency> 58 <dependency> 59 <groupId>org.springframework</groupId> 60 <artifactId>spring-web</artifactId> 61 <version>${org.springframework.version}</version> 62 </dependency> 63 <dependency> 64 <groupId>org.springframework</groupId> 65 <artifactId>spring-webmvc</artifactId> 66 <version>${org.springframework.version}</version> 67 </dependency> 68 <dependency> 69 <groupId>org.springframework</groupId> 70 <artifactId>spring-aop</artifactId> 71 <version>${org.springframework.version}</version> 72 </dependency> 73 <dependency> 74 <groupId>org.aspectj</groupId> 75 <artifactId>aspectjweaver</artifactId> 76 <version>1.7.4</version> 77 </dependency> 78 <dependency> 79 <groupId>org.springframework</groupId> 80 <artifactId>spring-tx</artifactId> 81 <version>${org.springframework.version}</version> 82 </dependency> 83 <dependency> 84 <groupId>org.springframework.security.oauth</groupId> 85 <artifactId>spring-security-oauth2</artifactId> 86 <version>1.0.5.RELEASE</version> 87 </dependency> 88 <dependency> 89 <groupId>org.springframework</groupId> 90 <artifactId>spring-test</artifactId> 91 <version>${org.springframework.version}</version> 92 <scope>test</scope> 93 </dependency> 94 95 <!-- servlet--> 96 <dependency> 97 <groupId>javax.servlet</groupId> 98 <artifactId>servlet-api</artifactId> 99 <version>3.0-alpha-1</version> 100 </dependency> 101 102 <!-- MessageConverter--> 103 <dependency> 104 <groupId>com.fasterxml.jackson.core</groupId> 105 <artifactId>jackson-core</artifactId> 106 <version>2.3.0</version> 107 </dependency> 108 <dependency> 109 <groupId>com.fasterxml.jackson.core</groupId> 110 <artifactId>jackson-databind</artifactId> 111 <version>2.3.0</version> 112 </dependency> 113 114 <!-- log4J --> 115 <dependency> 116 <groupId>commons-logging</groupId> 117 <artifactId>commons-logging</artifactId> 118 <version>1.1.3</version> 119 </dependency> 120 <dependency> 121 <groupId>log4j</groupId> 122 <artifactId>log4j</artifactId> 123 <version>1.2.17</version> 124 </dependency> 125 <dependency> 126 <groupId>org.apache.httpcomponents</groupId> 127 <artifactId>httpclient</artifactId> 128 <version>4.3.1</version> 129 </dependency> 130 131 <!-- DataBase Driver --> 132 <!-- MySQL --> 133 <dependency> 134 <groupId>mysql</groupId> 135 <artifactId>mysql-connector-java</artifactId> 136 <version>5.1.25</version> 137 </dependency> 138 139 <dependency> 140 <groupId>com.mchange</groupId> 141 <artifactId>c3p0</artifactId> 142 <version>0.9.5-pre3</version> 143 </dependency> 144 145 <dependency> 146 <groupId>commons-beanutils</groupId> 147 <artifactId>commons-beanutils</artifactId> 148 <version>1.9.0</version> 149 </dependency> 150 <dependency> 151 <groupId>commons-lang</groupId> 152 <artifactId>commons-lang</artifactId> 153 <version>2.6</version> 154 </dependency> 155 <dependency> 156 <groupId>commons-pool</groupId> 157 <artifactId>commons-pool</artifactId> 158 <version>20030825.183949</version> 159 </dependency> 160 <!-- 数据库持久化notation--> 161 <dependency> 162 <groupId>org.eclipse.persistence</groupId> 163 <artifactId>javax.persistence</artifactId> 164 <version>2.1.0</version> 165 </dependency> 166 167 </dependencies> 168 169 170 <build> 171 <finalName>TestServer4</finalName> 172 </build> 173 </project>

1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> 5 6 <!-- 配置文件 --> 7 <bean id="proConfig" class="org.springframework.beans.factory.config.PropertiesFactoryBean"> 8 <property name="locations"> 9 <list> 10 <value>classpath*:database.properties</value> 11 </list> 12 </property> 13 </bean> 14 15 <!--MySQL Database--> 16 <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" 17 destroy-method="close"> 18 <property name="driverClass" value="#{proConfig.driverClass}"/> 19 <property name="jdbcUrl" value="#{proConfig.jdbcUrl}"/> 20 <property name="user" value="#{proConfig.user}"/> 21 <property name="password" value="#{proConfig.password}"/> 22 <property name="maxPoolSize" value="#{proConfig.maxPoolSize}"/> 23 <property name="minPoolSize" value="#{proConfig.minPoolSize}"/> 24 <property name="initialPoolSize" value="#{proConfig.initialPoolSize}"/> 25 <property name="testConnectionOnCheckin" value="#{proConfig.testConnectionOnCheckin}"/> 26 <property name="maxIdleTime" value="#{proConfig.maxIdleTime}"/> 27 <property name="acquireIncrement" value="#{proConfig.acquireIncrement}"/> 28 <property name="acquireRetryAttempts" value="#{proConfig.acquireRetryAttempts}"/> 29 <property name="acquireRetryDelay" value="#{proConfig.acquireRetryDelay}"/> 30 <property name="automaticTestTable" value="#{proConfig.automaticTestTable}"/> 31 <property name="idleConnectionTestPeriod" value="#{proConfig.idleConnectionTestPeriod}"/> 32 <property name="checkoutTimeout" value="#{proConfig.checkoutTimeout}"/> 33 </bean> 34 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> 35 <property name="dataSource" ref="dataSource"/> 36 </bean> 37 <bean id="transactionManager" 38 class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 39 <property name="dataSource" ref="dataSource"/> 40 </bean> 41 42 </beans>

1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 5 6 <bean id="myDao" class="dao.impl.mydaoImpl"> 7 <property name="dataSource" ref="dataSource" /> 8 </bean> 9 10 </beans>

1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:context="http://www.springframework.org/schema/context" 5 xmlns:mvc="http://www.springframework.org/schema/mvc" 6 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd"> 7 8 <context:component-scan base-package="com.matchbox" /> 9 10 <!-- http.get 的时候,如果uri中带中文参数,需要设置get方法的header的Content-Type为utf-8 --> 11 <mvc:annotation-driven> 12 <mvc:message-converters> 13 <!-- StringHttpMessageConverter 默认采用的是 text/plain;charset=ISO-8859-1 --> 14 <!-- RESTClient 响应 Content-Type: text/plain;charset=UTF-8 --> 15 <bean class="org.springframework.http.converter.StringHttpMessageConverter"> 16 <property name="supportedMediaTypes"> 17 <list> 18 <value>text/plain;charset=UTF-8</value> 19 </list> 20 </property> 21 </bean> 22 23 <!-- json格式的自动转换--> 24 <!-- RESTClient 响应 Content-Type: application/json;charset=UTF-8 --> 25 <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/> 26 </mvc:message-converters> 27 </mvc:annotation-driven> 28 29 </beans>
(4) .properties 文件

1 driverClass=com.mysql.jdbc.Driver 2 #jdbcUrl=jdbc:mysql://localhost:3306/my_test_database?useUnicode=true&characterEncoding=UTF-8 3 jdbcUrl=jdbc:mysql://127.0.0.1:3306/my_test_database?useUnicode=true&characterEncoding=UTF-8 4 user=root 5 password=mysql 6 maxPoolSize=100 7 minPoolSize=1 8 initialPoolSize=1 9 testConnectionOnCheckin=true 10 maxIdleTime=25000 11 acquireIncrement=1 12 acquireRetryAttempts=30 13 acquireRetryDelay=1000 14 automaticTestTable=t_c3p0 15 idleConnectionTestPeriod=18000 16 checkoutTimeout=5000