###1.导入jar包,必须jar包:c3p0、mysql-connector、beans、context、dao、jdbc,截图如下
###2.db.properties
jdbc.user=root
jdbc.password=123456
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql:///test?useUnicode=true&characterEncoding=UTF8
jdbc.initPoolSize=10
jdbc.maxPoolSize=50
###3.applicationContext.xml
<context:property-placeholder location="classpath:db.properties"/>
<bean id="dataSources" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${jdbc.user}"></property>
<property name="password" value="${jdbc.password}"></property>
<property name="driverClass" value="${jdbc.driverClass}"></property>
<property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
<property name="initialPoolSize" value="${jdbc.initPoolSize}"></property>
<property name="maxPoolSize" value="${jdbc.maxPoolSize}"></property>
</bean>
<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSources"></property>
</bean>
###4.jdbcTest
package com.test.spring.jdbc;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import javax.sql.DataSource;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
public class JdbcTest {
private ApplicationContext ctx= null;
private JdbcTemplate jdbcTemplate;
{
ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
jdbcTemplate = (JdbcTemplate) ctx.getBean("jdbcTemplate");
}
/**
* 单个 更新/插入/删除
*/
@Test
public void testUpdate(){
String sql = "update t_thing set content=? where id=?";
jdbcTemplate.update(sql, "张三","1000000001");
}
/**
* 批量 更新/插入/删除
*/
@Test
public void testBatchInsert(){
/**
* 注意:数据库字段是5个列:id,name,content,flag,addTime
* 我将id设置为自增长,所以这里insert时不需要填写id
*/
String sql = "insert into t_thing(name,content,flag,addTime) values(?,?,?,?)";
List<Object[]> batchArgs = new ArrayList<>();
batchArgs.add(new Object[]{"王五","完成","1","20160904111700"});
batchArgs.add(new Object[]{"赵六","没有完成","1","20160904111701"});
jdbcTemplate.batchUpdate(sql, batchArgs);
}
/**
* 查询单条记录
* 注意:
* 1.使用queryForObject(String sql, RowMapper<Thing> rowMapper, Object... args)查询单个对象
* 2.RowMapper指定映射结果集的行,常用的实现类BeanPropertyRowMapper
* 3.sql语句要用别名指定返回的字段与接收对象的属性一致
* 4.不支持级联查询,所以需要使用mybatis等框架
*/
@Test
public void testQueryForObject(){
String sql = "SELECT id,name,content,flag,addTime FROM t_thing WHERE id=?";
RowMapper<Thing> rowMapper = new BeanPropertyRowMapper<>(Thing.class);
Thing thing = (Thing)jdbcTemplate.queryForObject(sql, rowMapper,1000000000);
System.out.println(thing);
}
/**
* 查询多条记录
* 注意:
* 1.调用的不是QueryForList()方法
*/
@Test
public void testQueryForList(){
String sql = "SELECT id,name,content,flag,addTime FROM t_thing";
RowMapper<Thing> rowMapper = new BeanPropertyRowMapper<>(Thing.class);
List<Thing> list = jdbcTemplate.query(sql, rowMapper);
System.out.println(list);
}
/**
* 统计查询
*/
@Test
public void testQueryCount(){
String sql = "SELECT COUNT(tt.id) FROM t_thing tt";
long count = jdbcTemplate.queryForObject(sql, long.class);
System.out.println(count);
}
/**
* 测试数据库联通
*/
@Test
public void test() throws SQLException {
DataSource dataSource = (DataSource) ctx.getBean("dataSources");
System.out.println(dataSource.getConnection());
}
}
###5.bean
public class Thing {
private Integer id;
private String name;
private String content;
private int flag;
private String addTime;
}
###6.数据库
来源:oschina
链接:https://my.oschina.net/u/2312022/blog/742145