Spring框架学习笔记——03

Spring的jdbcTemplate操作

  1. spring框架一站式框架
    (1)针对javaee三层,每一层都有解决技术
    (2)在dao层,使用 jdbcTemplate
  2. spring对不同的持久化层技术都进行封装
    在这里插入图片描述
    jdbcTemplate对jdbc进行封装
  3. jdbcTemplate使用和dbutils使用很相似,都数据库进行crud操作
    jdbcTemplate使用的jar包:
    在这里插入图片描述

Spring配置C3P0连接池

第一步:引入响应jar包

com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar

第二步:配置连接池

<!-- 配置C3P0连接池 --> 
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
	<property name="driverClass" value="com.mysql.jdbc.Driver"/>
	<property name="jdbcUrl" value="jdbc:mysql:///web"/> 
	<property name="user" value="root"/> 
	<property name="password" value="root"/> 
</bean> 

添加操作

//添加操作
@Test
public void add() {
	//设置数据库信息
	DriverManagerDataSource dataSource = new DriverManagerDataSource();
	dataSource.setDriverClassName("com.mysql.jdbc.Driver");
	dataSource.setUrl("jdbc:mysql:///web");
	dataSource.setUsername("root");
	dataSource.setPassword("root");
	//创建jdbcTemplate对象,设置数据源
	JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
	//调用jdbcTemplate对象里面的方法实现操作
	//创建sql语句
	String sql = "insert into user values(?,?)";
	int rows = jdbcTemplate.update(sql, "lucy","250");
	System.out.println(rows);
}

修改操作

//2 修改操作
@Test
public void update() {
	//设置数据库信息
	DriverManagerDataSource dataSource = new DriverManagerDataSource();
	dataSource.setDriverClassName("com.mysql.jdbc.Driver");
	dataSource.setUrl("jdbc:mysql:///web");
	dataSource.setUsername("root");
	dataSource.setPassword("root");
	
	//创建jdbcTemplate对象
	JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
	
	//调用jdbcTemplate里面的方法实现 update方法
	String sql = "update user set password=? where username=?";
	int rows = jdbcTemplate.update(sql, "1314","lucy");
	System.out.println(rows);
}

删除操作

//删除操作
@Test
public void delete() {
	//设置数据库信息
	DriverManagerDataSource dataSource = new DriverManagerDataSource();
	dataSource.setDriverClassName("com.mysql.jdbc.Driver");
	dataSource.setUrl("jdbc:mysql:///web");
	dataSource.setUsername("root");
	dataSource.setPassword("root");
	
	//创建jdbcTemplate对象
	JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
	
	//调用update方法实现删除
	String sql = "delete from user where username=?";
	int rows = jdbcTemplate.update(sql, "lucy");
	System.out.println(rows);
}

查询操作

/*
* QueryRunner runner = new QueryRuner(datasource);
 * 返回对象
 * runner.query(sql,new BeanHandler<User>(User.class));
 * 
 * 返回list集合
 * runner.query(sql,new BeanListHander<User>(User.class))
 * 
 * 1 在dbutils时候,有接口 ResultSetHandler
 * dbutils提供了针对不同的结果实现类
 * 
 * 2 jdbcTemplate实现查询,有接口 RowMapper,
 * jdbcTemplate针对这个接口没有提供实现类,得到不同的类型数据需要自己进行数据封装
 * 
 * */
1.查询返回某一个值
//创建jdbcTemplate对象
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
//调用方法得到记录数
String sql = "select count(*) from user";
//调用jdbcTemplate的方法
int count = jdbcTemplate.queryForObject(sql, Integer.class);
System.out.println(count);
2. 查询返回对象
//创建jdbcTemplate对象
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
//写sql语句,根据username查询
String sql = "select * from user where username=?";
//调用jdbcTemplate的方法实现
//第二个参数是接口 RowMapper,需要自己写类实现接口,自己做数据封装
User user = jdbcTemplate.queryForObject(sql, new MyRowMapper(), "mary");
System.out.println(user);

class MyRowMapper implements RowMapper<User> {
	@Override
	public User mapRow(ResultSet rs, int num) throws SQLException {
		// 1 从结果集里面把数据得到
		String username = rs.getString("username");
		String password = rs.getString("password");
		
		// 2 把得到数据封装到对象里面
		User user = new User();
		user.setUsername(username);
		user.setPassword(password);
		
		return user;
	}
}
3.查询返回list集合
//创建jdbcTemplate对象
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

//写sql语句
String sql = "select * from user";
//调用jdbcTemplate的方法实现
List<User> list = jdbcTemplate.query(sql,new MyRowMapper());

dao使用jdbcTemplate

配置文件:

<!-- 配置c3p0连接池 -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<!-- 注入属性值 -->
		<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
		<property name="jdbcUrl" value="jdbc:mysql:///web"></property>
		<property name="user" value="root"></property>
		<property name="password" value="root"></property>
	</bean>
	
	<!-- 创建service和dao对象,在service注入dao对象 -->
	<bean id="userService" class="cn.itcast.c3p0.UserService">
		<!-- 注入dao对象 -->
		<property name="userDao" ref="userDao"></property>
	</bean>
	
	<bean id="userDao" class="cn.itcast.c3p0.UserDao">
		<!-- 注入jdbcTemplate对象 -->
		<property name="jdbcTemplate" ref="jdbcTemplate"></property>
	</bean>
	<!-- 创建jdbcTemplate对象 -->
	<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
		<!-- 把dataSource传递到模板对象里面 -->
		<property name="dataSource" ref="dataSource"></property>
	</bean>
原创文章 19 获赞 8 访问量 858

猜你喜欢

转载自blog.csdn.net/qq_41519304/article/details/105775710