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.数据库
输入图片说明数据库

相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息