###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.數據庫
數據庫