美文网首页JavaMVC框架程序员
jdbcTemplate和Spring配置C3P0连接池

jdbcTemplate和Spring配置C3P0连接池

作者: 常威爆打来福 | 来源:发表于2017-10-31 18:22 被阅读130次
    一 概述

    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<User>{
    
        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<User> users = jdbcTemplate.query(sql,new MyRowMapper());
            System.out.println(users);
        }
    
    class MyRowMapper implements RowMapper<User>{
    
        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配置文件,配置连接池

        <!--配置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/text"></property>
            <property name="user" value="root"></property>
            <property name="password" value="root"></property>
        </bean>
    
    四 2 dao使用jdbcTemplate

    配置文件

        <!--配置userService-->
        <bean id="userService" class="c3p0.UserService">
            <!--注入dao-->
            <property name="userDao" ref="userDao"></property>
        </bean>
        <!--配置userDao-->
        <bean id="userDao" class="c3p0.UserDao">
            <!--注入jdbcTemplate-->
            <property name="jdbcTemplate" ref="jdbcTemplate"></property>
        </bean>
        <!--配置jdbcTemplate-->
        <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <!--注入dataSource-->
            <property name="dataSource" ref="dataSource"></property>
        </bean>
    

    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连接池

        本文链接:https://www.haomeiwen.com/subject/hmvauxtx.html