mysql c3p0 spring_jdbcTemplate和Spring配置C3P0连接池

一 概述

1 spring框架一站式框架

(1) 针对javaee三层,每一层都有解决技术

(2) 在dao层,使用jdbcTemplate

2 spring对不同的持久化层技术都进行了封装

ORM持久化技术

模板类

JDBC

org.springframework.jdbc.core.JdbcTemplate

Hibernate

org.springframework.orm.hibernate5.HibernateTemplate

IBatis(MyBatis)

org.springframework.orm.ibatis.SqlMapClientTemplate

JPA

or g.springframework.orm.jpa.JpaTemplate

(1) jdbcTemplate对jdbc进行封装

3 jdbcTemplate使用和dbutils使用很相似,对数据进行crud操作

二 jdbcTemplate操作

1 增加

(1)导入jdbcTemplate使用的jar包

1849f7e5f83c?utm_source=oschina-app

jar包

(2)创建对象,设置数据库信息

//创建对象,设置数据库信息

DriverManagerDataSource dataSource = new DriverManagerDataSource();

dataSource.setDriverClassName("com.mysql.jdbc.Driver");

dataSource.setUrl("jdbc:mysql://localhost:3306/text?useUnicode=true&characterEncoding=utf-8");

dataSource.setUsername("root");

dataSource.setPassword("root");

(3)创建jdbcTemplate对象,设置数据源

//创建jdbcTemplate对象,设置数据源

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

(4)调用jdbcTemplate对象里面的方法实现操作

//调用jdbcTemplate对象里面的方法实现操作

String sql = "insert into user (username,password) values(?,?);";

jdbcTemplate.update(sql,"Mary",123456);

2 修改

@Test

public void update(){

//创建对象,设置数据库信息

DriverManagerDataSource dataSource = new DriverManagerDataSource();

dataSource.setDriverClassName("com.mysql.jdbc.Driver");

dataSource.setUrl("jdbc:mysql://localhost:3306/text?Unicode=true&characterEncoding=utf-8");

dataSource.setUsername("root");

dataSource.setPassword("root");

//创建jdbcTemplate对象,设置数据源

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

String sql = "update user set username=?,password=? where id=?";

//调用jdbcTemplate里面的方法实现update方法、

jdbcTemplate.update(sql,"邹",8888888,2);

}

3 删除

@Test

public void delete(){

//创建对象,设置数据库信息

DriverManagerDataSource dataSource =new DriverManagerDataSource();

dataSource.setDriverClassName("com.mysql.jdbc.Driver");

dataSource.setUrl("jdbc:mysql://localhost:3306/text?Unicode=true&characterEncoding=utf-8");

dataSource.setUsername("root");

dataSource.setPassword("root");

//创建jdbcTemplate对象,设置数据源

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

String sql = "delete from user where id=?";

//调用jdbcTemplate对象里面的方法实现操作

jdbcTemplate.update(sql,11);

}

4 查询

(1)查询返回某一个值

@Test

public void select1(){

//创建对象,设置数据库信息

DriverManagerDataSource dataSource = new DriverManagerDataSource();

dataSource.setDriverClassName("com.mysql.jdbc.Driver");

dataSource.setUrl("jdbc:mysql://localhost:3306/text?Unicode=true&characterUncoding=utf-8");

dataSource.setUsername("root");

dataSource.setPassword("root");

//创建jdbcTemplate对象,设置数据源

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

//调用jdbcTemplate对象里面的方法实现操作

String sql = "select count(*) from user";

//第二个参数,是返回类型的class

Integer a = jdbcTemplate.queryForObject(sql,Integer.class);

System.out.println(a);

}

(2)查询返回对象

select2.java

@Test

public void selete2(){

//创建对象设置数据库信息

DriverManagerDataSource dataSource = new DriverManagerDataSource();

dataSource.setDriverClassName("com.mysql.jdbc.Driver");

dataSource.setUrl("jdbc:mysql://localhost:3306/text?Unicode=true&characterUncoding=utf-8");

dataSource.setUsername("root");

dataSource.setPassword("root");

//创建jdbcTemplate对象设置数据源

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

//调用jdbcTemplate对象里面的方法实现操作

String sql = "select * from user where id = ?";

//第二个参数是接口RowMapper,需要自己写类实现接口,自己做数据封装

//第三个参数是向预编译sql语句中添加参数

User user = jdbcTemplate.queryForObject(sql, new MyRowMapper(),1);

System.out.println(user);

}

MyRowMapper.java

class MyRowMapper implements RowMapper{

public User mapRow(ResultSet resultSet, int num) throws SQLException {

//1 从结果集中把数据得到

int id = Integer.parseInt(resultSet.getString("id"));

String username = resultSet.getString("username");

String password = resultSet.getString("password");

//2 把得到数据封装到对象里面

User user = new User();

user.setId(id);

user.setUsername(username);

user.setPassowrd(password);

return user;

}

}

(3)查询返回list集合

@Test

public void select3(){

//创建对象设置数据库信息

DriverManagerDataSource dataSource = new DriverManagerDataSource();

dataSource.setDriverClassName("com.mysql.jdbc.Driver");

dataSource.setUrl("jdbc:mysql://localhost:3306/text?Unicode=true&characterUncoding=utf-8");

dataSource.setUsername("root");

dataSource.setPassword("root");

//创建jdbcTemplate对象设置数据源

JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

//调用jdbcTemplate对象里面的方法实现操作

String sql = "select * from user";

//调用jdbcTemplate方法实现

//第一个参数 sql语句

//第二个参数 RowMapper

//第三个参数 预编译sql语句参数 可是省略

List users = jdbcTemplate.query(sql,new MyRowMapper());

System.out.println(users);

}

class MyRowMapper implements RowMapper{

public User mapRow(ResultSet resultSet, int num) throws SQLException {

//1 从结果集中把数据得到

int id = Integer.parseInt(resultSet.getString("id"));

String username = resultSet.getString("username");

String password = resultSet.getString("password");

//2 把得到数据封装到对象里面

User user = new User();

user.setId(id);

user.setUsername(username);

user.setPassowrd(password);

return user;

}

}

三 Spring配置C3P0连接池

1 导入jar包

1849f7e5f83c?utm_source=oschina-app

c3p0链接jar包

2 创建spring配置文件,配置连接池

四 2 dao使用jdbcTemplate

配置文件

UserService.java

public class UserService {

private UserDao userDao;

public void setUserDao(UserDao userDao) {

this.userDao = userDao;

}

public void add1(){

userDao.add2();

}

}

UserDao.java

public class UserDao {

private JdbcTemplate jdbcTemplate;

public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {

this.jdbcTemplate = jdbcTemplate;

}

public void add2() {

String sql = "insert into user (username, password) values(?,?) ";

jdbcTemplate.update(sql,"jack",987654);

}

}

测试

public class Text {

@Test

public void test(){

ApplicationContext context = new ClassPathXmlApplicationContext("Spring/applicationContext.xml");

UserService userService = (UserService) context.getBean("userService");

userService.add1();

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值