spring--(22)JdbcTemplate

###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.數據庫
輸入圖片說明數據庫

相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息