Spring入门3:Jdbc连接池的支持
2018-03-29 22:22
351 查看
1. 数据库连接参数资源配置db.properties
driverClass=com.mysql.jdbc.DriverjdbcUrl=jdbc:mysql:///day33
user=root
password=root
initialPoolSize=3
maxPoolSize=6
2.bean.xml配置
<!-- 开启注解 --> <context:component-scan 4000 base-package="cn.aop.h_jdbc"></context:component-scan> <!-- 加载properties配置文件 --> <context:property-placeholder location="classpath:cn/aop/h_jdbc/db.properties"/> <!-- 1. 创建连接池实例 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="${driverClass}"></property> <property name="jdbcUrl" value="${jdbcUrl}"></property> <property name="user" value="${user}"></property> <property name="password" value="${password}"></property> <property name="initialPoolSize" value="${initialPoolSize}"></property> <property name="maxPoolSize" value="${maxPoolSize}"></property> </bean> <!-- 2. JdbcTemplate实例加入容器 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- dao实例 --> <bean id="userDao" class="cn.aop.h_jdbc.UserDao"> <property name="jdbcTemplate" ref="jdbcTemplate"></property> </bean>
3.实体与dao
//1. 实体类(属性略),数据库略(数据表的字段与实体类的成员名一致) public class User { private int id; private String name; private int age; private char sex; } //2. 对象dao接口 public interface IUserDao { void save(User user); void delete(Serializable id); // 测试方法 User findById(Serializable id); List<User> findAll(); } //3. dao实现类 public class UserDao implements IUserDao { /* // 优化1: 连接管理交给连接池! private DataSource dataSource; public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; } // Spring对jdbc操作支持的工具类 JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource); */ //由IOC容器注入! private JdbcTemplate jdbcTemplate; public void setJdbcTemplate(JdbcTemplate jdbcTemplate) { this.jdbcTemplate = jdbcTemplate; } /* * 1. 传统的jdbc操作 * 2. 优化重复代码 */ public void save(User user) { String sql = "insert into t_user(name,age,sex)values(?,?,?)"; // 支持更新操作 jdbcTemplate.update(sql,user.getName(),user.getAge(),user.getSex()+""); } // 删除 public void delete(Serializable id) { String sql = "delete from t_user where id=?"; jdbcTemplate.update(sql,id); } public User findById(Serializable id) { // 测试1: list的元素是一个map,map就是每一行数据! //List<Map<String, Object>> list1 = jdbcTemplate.queryForList("select * from t_user"); // 测试2: 只能查询返回一列,需要指定该列的类型 //List<String> list2 = jdbcTemplate.queryForList("select name from t_user", String.class); // 测试3: 注意:传入的类型是查询列的类型! //Integer i = jdbcTemplate.queryForObject("select id from t_user where id=? ", Integer.class,id); // 查询返回一个List集合 //List<User> list = jdbcTemplate.query(sql, rowMapper); // 查询封装对象,必须要手动处理!Spring不会帮你自动封装! User user = jdbcTemplate.queryForObject("select * from t_user where id=?", new RowMapper<User>(){ // 告诉Spring,如何转换一行 // 参数1: 结果集 // 参数2: 当前是结果集的第几行 @Override public User mapRow(ResultSet rs, int index) throws SQLException { User user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); user.setAge(rs.getInt("age")); user.setSex(rs.getString("sex").charAt(0)); return user; } }, id); return user; } @Override public List<User> findAll() { List<User> list = jdbcTemplate.query("select * from t_user", new RowMapper<User>(){ // 告诉Spring,如何转换一行 // 参数1: 结果集 // 参数2: 当前是结果集的第几行 @Override public User mapRow(ResultSet rs, int index) throws SQLException { User user = new User(); user.setId(rs.getInt("id")); user.setName(rs.getString("name")); user.setAge(rs.getInt("age")); user.setSex(rs.getString("sex").charAt(0)); return user; } }); return list; } }
5.测试
//测试 public class App { private ApplicationContext ac = new ClassPathXmlApplicationContext("bean.xml",App.class); @Test public void testApp() throws Exception { User user = new User(); user.setName("JK"); user.setSex('男'); user.setAge(18); // 保存 IUserDao userDao = (IUserDao) ac.getBean("userDao"); //userDao.save(user); //userDao.delete(2); // 主键查询 //userDao.findById(1); // 查询全部 System.out.println(userDao.findAll()); } }
*若有不足或错误,请多多指教,谢谢!*
相关文章推荐
- Spring对jdbc的支持
- [Spring学习笔记 7 ] Spring中的数据库支持 RowMapper,JdbcDaoSupport 和 事务处理Transaction
- Spring-jdbc:使用支持具名参数的JdbcTemplate
- Spring对jdbc的支持/依据properties配置数据源
- 【第七章】 对JDBC的支持 之 7.1 概述 ——跟我学spring3
- spring对JDBC和orm的支持实例详解
- spring jdbc --注:c3p0数据库连接池或druid连接池使用配置整理
- 《Spring 2.0技术手册》 读书笔记七-Spring的DAO框架(2)-JDBC支持
- Spring入门(三)— AOP注解、jdbc模板、事务
- Spring 对JDBC操作的支持
- 【第七章】 对JDBC的支持 之 7.3 关系数据库操作对象化 ——跟我学spring3
- Spring入门(Spring对JSR支持的说明)
- 传智播客--Spring的AOP和spring对Jdbc的支持(佟刚)
- 【第七章】 对JDBC的支持 之 7.5 集成Spring JDBC及最佳实践 ——跟我学spring3
- 【第七章】 对JDBC的支持 之 7.2 JDBC模板类 ——跟我学spring3
- Spring中JdbcTemplate结合连接池(c3p0、dbcp、JdbcDateSupport)及配置properties
- 《Spring 2.0技术手册》 读书笔记七-Spring的DAO框架(2)-JDBC支持
- 再淡spring jdbc 连接池断开重连设置
- spring对JDBC的支持