###1.导入jar包,必须jar包:c3p0、mysql-connector、beans、context、dao、jdbc,截图以下
###2.db.propertiesjava
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.xmlmysql
<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.jdbcTestspring
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.beansql
public class Thing { private Integer id; private String name; private String content; private int flag; private String addTime; }
###6.数据库
数据库