Spring通过XML配置c3p0连接池和dao层注解注入使用 jdbcTemplate
来源:互联网 发布:网络用语蛤蟆啥意思 编辑:程序博客网 时间:2024/05/16 15:55
Spring通过注解配置c3p0连接池和dao使用 jdbcTemplate
1.Spring配置c3p0连接池
第一步:导入c3p0的jar包
jar包下载
第二步:创建Spring配置文件,配置连接池
平常我们写c3p0连接池时是这样写的:
ComboPooledDataSource dataSource=new ComboPooledDataSource(); dataSource.setDriverClass("com.mysql.jdbc.Driver"); dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/template"); dataSource.setUser("root"); dataSource.setPassword("");
现在有了Spring后,我们就通过Spring的容器(IOC思想,控制反转)来进行JavaBean的对象管理。
Spring的配置文件:
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- 配置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://localhost:3306/template"></property> <property name="user" value="root"></property> <property name="password" value=""></property> </bean></beans>
2.在dao层,使用jdbcTemplate
既然在dao层里面使用jdbcTemplate。那么现在就定义一个完整的,结构,包括dao层,service层的例子:
dao层:
//通过注解方式创建对象,对象被Spring管理。@Component(value="userDao")public class UserDao { //注解方式注入对象 @Resource(name="jdbcTemplate") private JdbcTemplate jdbcTemplate; public User showUser(String name){ User user=jdbcTemplate.queryForObject("select * from user where name=?", new RowMapper<User>(){ @Override public User mapRow(ResultSet rs, int rowNum) throws SQLException { User user=new User(rs.getString("name"), rs.getString("password")); return user; }}, name); return user; }}
service层:
//通过注解方式创建对象,对象被Spring管理。@Service(value="userService")public class UserService { //通过注解方式注入对象 @Resource(name="userDao") private UserDao userDao; public User showUser(String name){ return userDao.showUser(name); }}
Spring的核心配置文件
<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"> <!-- 开启JavaBean注释扫描 --> <context:component-scan base-package="cn.domarvel"></context:component-scan> <!-- 创建c3p0连接池对象,并且初始化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://localhost:3306/template"></property> <property name="user" value="root"></property> <property name="password" value=""></property> </bean> <!-- 创建jdbcTemplate,并且通过IOC的依赖注入的构造注入方式注入c3p0连接池对象,那么获取到jdbcTemplate后就能够直接使用 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <constructor-arg name="dataSource" ref="dataSource"></constructor-arg> </bean></beans>
这里要注意一点:当我们是构造注入的时候,这里的name属性的值为构造函数传参那里定义的名称,而不是成员变量的名称。
比如我这里是用的JdbcTemplate的有参构造方法。
//这是JdbcTemplate的构造函数源代码 public JdbcTemplate(DataSource dataSource) { setDataSource(dataSource); afterPropertiesSet(); }
因为传参的地方参数名为dataSource所以,在Spring的核心配置文件中name属性值也是dataSource
现在讲讲上面的实现逻辑:
我想通过JdbcTemplate实现查找信息,里面的连接池用的是c3p0.
我定义了一个UserDao类,目的是为了查找数据库里面User的具体信息。
要想在UserDao里面使用JdbcTemplate,就必须先创建好c3p0连接池,创建c3p0连接池在Spring核心配置里面完成,有了c3p0连接池后就开始创建JdbcTemplate,创建JdbcTemplate是通过构造方法注入c3p0连接池对象的。JdbcTemplate创建好后,就在UserDao里面定义好JdbcTemplate,并且注入JdbcTemplate对象,注入后就能够通过JdbcTemplate对象查找数据库的信息了。后面就是通过注解方式创建UserDao,创建UserService,并且在UserService里面注入UserDao并且使用了。使用注解方式创建JavaBean对象还要开启JavaBean注解扫描。
- Spring通过XML配置c3p0连接池和dao层注解注入使用 jdbcTemplate
- c3p0连接池配置和Dao使用JdbcTemplate模板
- Spring配置连接池和dao使用jdbcTemplate
- Spring配置连接池和dao使用JdbcTemplate
- 使用spring配置C3P0连接池 并通过手动获取spring的ApplicationContext和bean对象使用库连接。
- 使用spring配置C3P0连接池 并通过手动获取spring的ApplicationContext和bean对象使用库连接
- Spring -- spring 中使用jdbc, c3p0连接池, dao概念
- Spring+Hibernate 配置和使用c3p0和proxool连接池
- Spring+Hibernate 配置和使用c3p0和proxool连接池
- Dao使用jdbcTemplate(注入过程)
- Spring中JdbcTemplate结合连接池(c3p0、dbcp、JdbcDateSupport)及配置properties
- Spring和C3P0数据连接池使用
- Spring c3p0连接池配置
- spring + c3p0 连接池配置
- spring配置c3p0连接池
- spring下,druid,c3p0,proxool,dbcp四个数据连接池的使用和配置
- spring整合c3p0和DBCP连接池的简单配置
- spring中jdbctemplate的使用以及c3p0
- 蓝桥杯打印十字
- Struts2升级版本至2.5.10
- 关于javascript闭包与重构
- Java学习一
- javascript面向对象 -- 构造函数
- Spring通过XML配置c3p0连接池和dao层注解注入使用 jdbcTemplate
- 小朋友排队(归并)
- 利用百度orc的图像识别
- hibernate手动配置
- 安卓工程师入门——ImageView
- CMM/CMMI的5个等级
- Android -- Fragment 基本用法、生命周期与细节注意
- 断点续传的原理
- 蓝桥杯带分数