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包

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包

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();
    }
}

你可能感兴趣的:(jdbcTemplate和Spring配置C3P0连接池)