使用spring实现数据库操作
需求:
查询用户列表
所需jar包
代码实现
dao层
QueryRunner放到成员变量位置并提供set方法,准备使用spring对其进行依赖注入
在这里插入代码片
public class IUserDaoImpl implements IUserDao {
private QueryRunner queryRunner;
public void setQueryRunner(QueryRunner queryRunner) { this.queryRunner = queryRunner;
}
@Override
public List<User> selectUserList() throws Exception { return queryRunner.query("select * from tb_user",new BeanListHandler<User> (User.class)); } }
service层
IUserDao放到成员变量位置并提供set方法,准备使用spring对其进行依赖注入
public class IuserServiceImpl implements IUserService {
private IUserDao userdao
public void setUserDao(IUserDao userDao) {
this.userDao = userDao;
}
@Override
public List<User> selectUserList() throws Exception { return userDao.selectUserList();
}
}
applicationContext.xml配置文件,步骤如下: 1,配置IUserServiceImpl到Spring容器,设置userDao属性 2,配置IUserDaoImpl到Spring容器,设置queryRunner属性 3,配置QueryRunner到Spring容器,设置dataSource属性 4,配置ComboPooledDataSource到Spring容器,设置driverClass、jdbcUrl、user、 password属性
<!‐‐ 1,配置IUserServiceImpl到Spring容器 ‐‐> <bean id="userService" class="com.qzw.service.IUserServiceImpl"> <property name="userDao" ref="userDao"></property> </bean> <!‐‐ 2,配置IUserDaoImpl到Spring容器 ‐‐> <bean id="userDao" class="com.qzw.dao.IUserDaoImpl"> <property name="queryRunner" ref="queryRunner"></property> </bean> <!‐‐ 3,配置QueryRunner到Spring容器 ‐‐> <bean id="queryRunner" class="org.apache.commons.dbutils.QueryRunner"> <constructor‐arg name="ds" ref="dataSource"></constructor‐arg> </bean> <!‐‐ 4,配置ComboPooledDataSource到Spring容器 ‐‐> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="com.mysql.cj.jdbc.Driver"></property> <property name="jdbcUrl" value="jdbc:mysql:///test?serverTimezone=UTC"> </property> <property name="user" value="root"></property> <property name="password" value="root"></property> </bean>
代码测试
@Test public void selectUserList() throws Exception { ClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext(“applicationContext.xml”); IUserService userService = (IUserService) applicationContext.getBean(“userService”); List userList = userService.selectUserList(); System.out.println(userList); }
存在的问题
仍然要我们自己写代码来获取容器
问题优化使用<context:property-placeholder location=“c3p0.properties”>标签加载c3p0的配置 文件