Spring -- spring 中使用jdbc, c3p0连接池, dao概念
1. 示例代码
CustomerDao.java ,dao接口
public interface CustomerDao {
public void insertCustomer(Customer c);
public void updateCustomer(Customer c);
public List<Customer> findCustomerByName(String name);
}
CustomerDaoImpl.java 接口实现
/**
* CustomerDaoImpl
*/
public class CustomerDaoImpl implements CustomerDao {
private JdbcTemplate jt ;
public void setJt(JdbcTemplate jt) {
this.jt = jt;
} public List<Customer> findCustomerByName(String name) {
String sql="select id,name,age from customers where name = ?";
return jt.query(sql, new Object[]{name}, new RowMapper(){
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
Customer c = new Customer();
c.setId(rs.getInt("id"));
c.setName(rs.getString("name"));
c.setAge(rs.getInt("age"));
return c;
}});
} /**
* 插入
*/
public void insertCustomer(Customer c) {
String sql = "insert into customers(name,age) values(?,?)";
jt.update(sql, new Object[]{c.getName(),c.getAge()});
} public void updateCustomer(Customer c) {
String sql = "update customers set name = ?,age = ? where id = ?";
jt.update(sql,new Object[]{c.getName(),c.getAge(),c.getId()});
}
}
jdbc.properties 分散配置
jdbc.driverclass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/spring
jdbc.username=root
jdbc.password=root c3p0.pool.size.max=10
c3p0.pool.size.min=2
c3p0.pool.size.ini=3
c3p0.pool.size.increment=2
dao.xml 配置文件
<?xml version="1.0"?>
<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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd ">
<!-- 指定分散配置的文件的位置 -->
<context:property-placeholder location="classpath:cn/itcast/spring/dao/jdbc.properties"/>
<!-- 配置c3p0数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${jdbc.driverclass}" />
<property name="jdbcUrl" value="${jdbc.url}" />
<property name="user" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" /> <property name="maxPoolSize" value="${c3p0.pool.size.max}" />
<property name="minPoolSize" value="${c3p0.pool.size.min}" />
<property name="initialPoolSize" value="${c3p0.pool.size.ini}" />
<property name="acquireIncrement" value="${c3p0.pool.size.increment}" />
</bean> <bean id="jt" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="dataSource" />
</bean> <!-- customerDao -->
<bean id="customerDao" class="cn.itcast.spring.dao.CustomerDaoImpl">
<property name="jt" ref="jt" />
</bean> <!-- *************************** daoSupport **************************** -->
<bean id="customerDaoSuport" class="cn.itcast.spring.dao.CustomerDaoSuportImpl">
<property name="dataSource" ref="dataSource" />
</bean>
</beans>
App.java 测试代码
public class App {
public static void main(String[] args) throws SQLException {
ApplicationContext ac = new ClassPathXmlApplicationContext(
"cn/itcast/spring/dao/dao.xml");
CustomerDao dao = (CustomerDao) ac.getBean("customerDao");
Customer c = new Customer();
c.setName("tom");
c.setAge(23);
dao.insertCustomer(c);
//
c = new Customer();
c.setId(1);
c.setName("jerry");
c.setAge(23);
dao.updateCustomer(c);
dao.findCustomerByName("tom");
}
}
CustomerDaoSuportImpl.java 另外一种配置方法: 省略模板的配置
/**
* CustomerDaoImpl,省略模板的配置
*/
public class CustomerDaoSuportImpl extends JdbcDaoSupport implements CustomerDao { public List<Customer> findCustomerByName(String name) {
String sql="select id,name,age from customers where name = ?";
return getJdbcTemplate().query(sql, new Object[]{name}, new RowMapper(){
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
Customer c = new Customer();
c.setId(rs.getInt("id"));
c.setName(rs.getString("name"));
c.setAge(rs.getInt("age"));
return c;
}});
} /**
* 插入
*/
public void insertCustomer(Customer c) {
String sql = "insert into customers(name,age) values(?,?)";
getJdbcTemplate().update(sql, new Object[]{c.getName(),c.getAge()});
} public void updateCustomer(Customer c) {
String sql = "update customers set name = ?,age = ? where id = ?";
getJdbcTemplate().update(sql,new Object[]{c.getName(),c.getAge(),c.getId()});
}
}
AppDaoSupport.java 省略模板配置 测试代码
public class AppDaoSupport {
public static void main(String[] args) throws SQLException {
ApplicationContext ac = new ClassPathXmlApplicationContext(
"cn/itcast/spring/dao/dao.xml");
CustomerDao dao = (CustomerDao) ac.getBean("customerDaoSuport");
Customer c = new Customer();
c.setName("tom");
c.setAge(23);
dao.insertCustomer(c);
}
}
Spring -- spring 中使用jdbc, c3p0连接池, dao概念的更多相关文章
- Maven 工程下 Spring MVC 站点配置 (三) C3P0连接池与@Autowired的应用
Maven 工程下 Spring MVC 站点配置 (一) Maven 工程下 Spring MVC 站点配置 (二) Mybatis数据操作 前两篇文章主要是对站点和数据库操作配置进行了演示,如果单 ...
- spark streaming将处理结果存入mysql中(使用c3p0连接池)
1.c3p0相应的架包导入工程中 将以下四个架包导入工程, 主要有三个架包:c3p0-0.9.5.2.jar c3p0-oracle-thin-extras-0.9.5.2.jar mchange-c ...
- spring项目中使用weblogic的连接池
1.首先在weblogic控制台中配置好一个数据源 我这里建立的数据源的名称叫 jdbc/app1,JNDI名称也叫 jdbc/app1 2.在spring中配置数据源的时候,做如下配置: <b ...
- C3P0连接池在hibernate和spring中的配置
首先为什么要使用连接池及为什么要选择C3P0连接池,这里就不多说了,目前C3P0连接池还是比较方便.比较稳定的连接池,能与spring.hibernate等开源框架进行整合. 一.hibernate中 ...
- Spring框架中 配置c3p0连接池 完成对数据库的访问
开发准备: 1.导入jar包: ioc基本jar jdbcTemplate基本jar c3p0基本jar 别忘了mysql数据库驱动jar 原始程序代码:不使用配置文件方式(IOC)生成访问数据库对象 ...
- Spring框架中 配置c3p0连接池
开发准备: 1.导入jar包: ioc基本jar jdbcTemplate基本jar c3p0基本jar 别忘了mysql数据库驱动jar 原始程序代码:不使用配置文件方式(IOC)生成访问数据库对象 ...
- Spring中c3p0连接池的配置 及JdbcTemplate的使用 通过XML配置文件注入各种需要对象的操作 来完成数据库添加Add()方法
通过配置文件XML方法的配置 可以使用非常简练的Service类 UserService类代码如下: package com.swift; public class UserService { pri ...
- Spring之c3p0连接池配置和使用
1.导入包:c3p0和mchange包 2.代码实现方式: package helloworld.pools; import com.mchange.v2.c3p0.ComboPooledDataSo ...
- (七)Spring 配置 c3p0 连接池
目录 在 Spring 核心配置文件中配置 c3p0 连接池 配置 JdbcTemplate 对象 在 service 层注入 userDao 在 UserDao 里面注入 JdbcTemplate ...
随机推荐
- ubuntu 下 Nginx相关设置
ubuntu安装Nginx之后的文件结构大致为: 所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下 启动程序文件在/usr/ ...
- “绝对”妹纸~position
CSS:布局之fixed,relative,absolute 记住abs是跟随 relative的,没有看到position:relative;之前他会一直向上查找. 直到执着的找到relative! ...
- Less-css扩展指定多层嵌套选择器样式
//扩展Extend Use Method:以在study上扩展指定多层嵌套选择器样式 //Share style .test{ font-size:18px; color:#ffffff; ul{ ...
- 巨蟒python全栈开发数据库攻略1:基础攻略
1.什么是数据库? 2.数据库分类 3.数据库简单介绍 4.安装数据库 5.修改root密码 6.修改字符集 7.sql介绍 8.简单sql操作
- 2015-03-22——js常用其它方法
Function Function.prototype.method = function (name, func) { this.prototype[name] = func; //此时th ...
- JS和CSS的初步入门(JS可以取得所有p的内容并显示)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DT ...
- MongoDB-1:安装和配置
一.简介 MongoDB一种非关系型数据库(NoSql),是一种强大.灵活.可扩展的数据存储方式,因为MongoDB是文档模型,自由灵活很高,可以让你在开发过程中畅顺无比,对于大数据量.高并发.弱事务 ...
- Vue(6)- Vue-router进阶、单页面应用(SPA)带来的问题
一.Vue-router进阶 回顾学过的vue-router,并参考官方文档学习嵌套路由等路由相关知识. 二.单页面应用(SPA)带来的问题 1.虽然单页面应用有优点,但是,如果后端不做服务器渲染(h ...
- SQL SERVER常见等待——解决会话等待产生的系统问题
SQL SERVER——解决会话等待产生的系统问题 转自: https://blog.csdn.net/z_cloud_for_SQL/article/details/55051215 版权声明:SQ ...
- go项目找不到包问题
最近学习go语言,但是在主函数中引入其他包(自定义包)中方法的时候,编译代码,显示找不到包,如: $GOPATH>go build stacker.gostacker.go:18:2: cann ...