工程目录
一、准备工作
1、导入JdbcTemplate相关的依赖jar包
- - c3p0依赖jar包*
c3p0-0.9.5.2.jar
mchange-commons-java-0.2.12.jar
- -mysql驱动包*
mysql-connector-java-5.1.37-bin.jar
- -jdbcTemplate依赖jar包*
commons-logging-1.2.jar
spring-beans-5.0.0.RELEASE.jar
spring-core-5.0.0.RELEASE.jar
spring-jdbc-5.0.0.RELEASE.jar
spring-tx-5.0.0.RELEASE.jar
2、
c3p0-config.xml
配置文件
二、代码编写
1、数据源c3p0-config.xml
<c3p0-config>
<!-- 使用默认的配置读取连接池对象 -->
<default-config>
<!-- 连接参数 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/my_db</property>
<property name="user">root</property>
<property name="password">root</property>
<!-- 连接池参数 -->
<!--初始化申请的连接数量-->
<property name="initialPoolSize">5</property>
<!--最大的连接数量-->
<property name="maxPoolSize">10</property>
<!--超时时间-->
<property name="checkoutTimeout">3000</property>
</default-config>
<named-config name="otherc3p0">
<!-- 连接参数 -->
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/db3</property>
<property name="user">root</property>
<property name="password">root</property>
<!-- 连接池参数 -->
<property name="initialPoolSize">5</property>
<property name="maxPoolSize">8</property>
<property name="checkoutTimeout">1000</property>
</named-config>
</c3p0-config>
2、User实体类
package com.mollen.demo04;
/**
* @ClassName: User
* @Auther: Mollen
* @CreateTime: 2018-09-10 10:46:21
* @Description:
* User实体类<==>User表
*/
public class User {
private String user;
private int age;
public User() {
}
public User(String user, int age) {
this.user = user;
this.age = age;
}
@Override
public String toString() {
return "User{" +
"user='" + user + '\'' +
", age=" + age +
'}';
}
//getter/setter...
}
2、JdbcTemplate测试类
package com.mollen.demo04;
import com.mchange.v2.c3p0.ComboPooledDataSource;
import org.junit.Test;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import javax.sql.DataSource;
import java.util.List;
import java.util.Map;
/**
* @ClassName: JdbcTemplateTest
* @Auther: Mollen
* @CreateTime: 2018-09-10 10:26:25
* @Description:
* Spring JdbcTemplate 测试
*/
public class JdbcTemplateTest {
/**
* 获取数据源
*/
DataSource ds = new ComboPooledDataSource();
/**
* 创建JdbcTemplate对象
*/
JdbcTemplate jtl = new JdbcTemplate(ds);
/**
* 1.新增数据
*/
@Test
public void test01() {
int count = jtl.update("INSERT INTO user VALUES(?,?)", "wangwu", 25);
System.out.println(count);
/**
* 2.删除数据
*/
@Test
public void test02() {
int count = jtl.update("DELETE FROM user WHERE name = ?", "wangwu");
System.out.println(count);
}
/**
* 3.修改数据
*/
@Test
public void test03() {
int count = jtl.update("UPDATE user SET age = ? WHERE name=?",30,"lisi" );
System.out.println(count);
}
/**
* 4.查询数据封装成map
* 注意事项:最大查询记录只能是1条
*/
@Test
public void tes04(){
Map<String, Object> userMap = jtl.queryForMap("SELECT * FROM user WHERE name=?", "lisi");
System.out.println(userMap);
}
/**
* 5.查询数据封装成list
*/
@Test
public void test05(){
List<Map<String, Object>> list = jtl.queryForList("SELECT * FROM user");
for (Map<String, Object> userMap : list) {
System.out.println(userMap);
}
}
/**
* 6.查询数据封装成对象
*/
@Test
public void test06(){
List<User> users = jtl.query("SELECT * FROM user", new BeanPropertyRowMapper<User>(User.class));
for (User user : users) {
System.out.println(user);
}
/**
* 7.记录查询条数
*/
@Test
public void test07(){
Long count = jtl.queryForObject("SELECT count(1) FROM user", Long.class);
System.out.println(count);
}
}
三、注意事项
1、
数据源
用的是c3p0
,默认连接<default-config>
配置
2、查询数据
封装map
只能是一条
。
3、使用
Spring JdbcTemplate
框架不用手动关闭数据库连接
,查看源码可知框架内部已经对数据连接进行了关闭。