连接池和JDBCTemplate
一:什么是连接池?使用连接池的好处是什么?
连接池就是一个存放数据库连接对象的容器。当系统初始化后,就会向数据库申请一些连接对象存放到容器里,用的时候直接从容器里取,用完后放回连接池。
连接池可以提高数据库访问效率,也可以节约资源。
二:java中提供了一个接口叫DataSource,他提供了连接池规范。开发者一般使用第三方的类库实现这个接口。C3P0 和 Druid(由阿里巴巴提供);
三:C3P0的具体使用:
1. 导入jar包 c3p0-0.9.5.2.jar 和 mchange-commons-java-0.2.12.jar
注意:不要了数据库驱动jar包
2. 定义配置文件
名称:c3p0.properties or c3p0-config.xml
路径:直接将配置放到src目录下即可
3:DataSource dataSource = new ComboPooledDataSource(); //创建连接池
Connection conn = dataSource.getConnection(); //创建连接对象
四:Druid的使用:
1:导入druid所需的包和数据库驱动包
2:定义配置文件,放在src目录下
Properties pro = new Properties(); //创建配置文件对象
InputStream is = Demo03.class.getClassLoader().getResourceAsStream("druid.properties"); //读到定义的配置文件
pro.load(is); //将配置文件加载到配置文件对象中
DataSource ds = DruidDataSourceFactory.createDataSource(pro); //获取连接池‘
Connection conn = ds.getConnection(); //获取连接对象
五:JDBCTemplate :JDBCTemplate是以Spring在JDBCAPI上定义的抽象层建立的JDBC存取框架,有了它可以更方便的操作数据库,增删查改操作更方便。
1:创建JDBCTemplate:
JDBCTemplate jdbc = new JDBCTemplate(DataSource data) //传入一个连接池对象
2:常用方法:所有方法都传入查询字符串
(1):uddate() 执行增删改操作
(2):queryForMap() 查询单条数据使用,返回map集合。
(3):queryForList() 查询多条数据使用,返回 List<Map<String,Object>>
(4):query() 查询单条数据,将数据封装成自定义对象
(5):queryForObject() 查询多条数据,将数据封装成自定义对象 例:jdbcTemplate.queryForObject(sql,new BeanPropertyRowMapper<User>(User.class),user.getName(),user.getPassword()); sql:查询语句 User:自定义类
(6):execute() 可以执行任何语句,一般用于执行DDL语句