• spring再学习之整合JDBC


    一、JDBCTemplate JDBC模板

    user类

    package cn.itcast.bean;
    
    import java.util.Date;
    
    public class User {
        private Integer id;
    
        private String username;
    
        private Date birthday;
    
        private String sex;
    
        private String address;
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public String getUsername() {
            return username;
        }
    
        public void setUsername(String username) {
            this.username = username == null ? null : username.trim();
        }
    
        public Date getBirthday() {
            return birthday;
        }
    
        public void setBirthday(Date birthday) {
            this.birthday = birthday;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex == null ? null : sex.trim();
        }
    
        public String getAddress() {
            return address;
        }
    
        public void setAddress(String address) {
            this.address = address == null ? null : address.trim();
        }
    }

    准备数据库:

    package cn.itcast.a_jdbctemplate;
    
    import java.beans.PropertyVetoException;
    
    import org.junit.Test;
    import org.springframework.jdbc.core.JdbcTemplate;
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    
    //演示JDBC模板
    public class Demo {
        
        @Test
        public void fun1() throws Exception {
            //0准备连接池C3p0
            ComboPooledDataSource dataSource = new ComboPooledDataSource();
            dataSource.setDriverClass("com.mysql.jdbc.Driver");
            dataSource.setJdbcUrl("jdbc:mysql:///mybatis");
            dataSource.setUser("root");
            dataSource.setPassword("mysqladmin");
    
            //1创建JDBC模板对象
            JdbcTemplate it = new JdbcTemplate();
            
            it.setDataSource(dataSource);
                
            //2、书写sql语句,并执行
            String sql="insert into user(username) value('rose')";
            it.update(sql);
            
        }
    
    }

    结果:

    二、UserDao用JDBCJDBCTemplate实现

    public interface UserDao {
        
        //
        void save (User u);
        //
        void delete(Integer id);
        //
        void update(User u);
        //
        User getById(Integer id);
        //
        int getTotalCount();
        //
    
    }

    实现类:

    手动注入JDBC模板

    private JdbcTemplate it;

    package cn.itcast.a_jdbctemplate;
    
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.core.RowMapper;
    
    import cn.itcast.bean.User;
    
    public class UserDaoImpl implements UserDao{
        private JdbcTemplate it;
        @Override
        public void save(User u) {
            String sql="insert into user value(null,?)";
            // TODO Auto-generated method stub
            it.update(sql, u.getUsername());
        }
    
        public JdbcTemplate getIt() {
            return it;
        }
    
        public void setIt(JdbcTemplate it) {
            this.it = it;
        }
    
        @Override
        public void delete(Integer id) {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public void update(User u) {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public User getById(Integer id) {
            
            String sql = "select * from user where id=?";
            
           return it.queryForObject(sql, new RowMapper<User>() {
                
                @Override
                public User mapRow(ResultSet rs, int arg1) throws SQLException {
                    
                    User u = new User();
                    u.setId(rs.getInt("id"));
                    u.setUsername(rs.getString("name")); 
                    // TODO Auto-generated method stub
                    return u;
                }
                
            }, id);
            
            // TODO Auto-generated method stub
        }
    
        @Override
        public int getTotalCount() {
            
            String sql = "select count(*) from user";
            // TODO Auto-generated method stub
            return it.queryForObject(sql,Integer.class);
        }
    
    }

    配置文件:

    顺序:

     

    db.properties配置文件

    jdbc.jdbcUrl=jdbc:mysql:///mybatis
    jdbc.driverClass=com.mysql.jdbc.Driver
    jdbc.user=root
    jdbc.password=*****

    spring配置文件:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns
    ="http://www.springframework.org/schema/beans"
    xmlns:p
    ="http://www.springframework.org/schema/p"
    xmlns:context
    ="http://www.springframework.org/schema/context"
    xsi:schemaLocation
    ="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-4.2.xsd "
    > <!--指定Spring读取db.properties --> <context:property-placeholder location="classpath:db.properties" /> <!-- 1.将连接池交给Spring管理 --> <bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property> <property name="driverClass" value="${jdbc.driverClass}"></property> <property name="user" value="${jdbc.user}"></property> <property name="password" value="${jdbc.password}"></property> </bean> <!-- 2.将JDBCTemplate放入Spring容器 --> <bean name="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean> <!-- 3.将UserDao放入spring容器 --> <bean name="userDao" class="cn.itcast.a_jdbctemplate.UserDaoImpl"> <property name="it" ref="jdbcTemplate"></property> </bean> </beans>

    测试:

    package cn.itcast.a_jdbctemplate;
    
    import javax.annotation.Resource;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.test.context.ContextConfiguration;
    import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    
    import cn.itcast.bean.User;
    
    //演示JDBC模板
    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration("classpath:applicationContext.xml")
    public class Demo02 {
        @Resource(name="userDao")
        private UserDao ud;
        @Test
        public void fun() throws Exception{
            int totalCount = ud.getTotalCount();
            System.out.println(totalCount);
            } 
    }

     结果:

    数据库资料:

    控制台输出结果:

    14

    三、通过继承来准备JDBC模板

    配置文件修改:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns
    ="http://www.springframework.org/schema/beans"
    xmlns:p
    ="http://www.springframework.org/schema/p"
    xmlns:context
    ="http://www.springframework.org/schema/context"
    xsi:schemaLocation
    ="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-4.2.xsd "
    > <!--指定Spring读取db.properties --> <context:property-placeholder location="classpath:db.properties" /> <!-- 1.将连接池交给Spring管理 --> <bean name="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property> <property name="driverClass" value="${jdbc.driverClass}"></property> <property name="user" value="${jdbc.user}"></property> <property name="password" value="${jdbc.password}"></property> </bean> <!-- 2.将UserDao放入spring容器 --> <bean name="userDao" class="cn.itcast.a_jdbctemplate.UserDaoImpl"> <!-- <property name="it" ref="jdbcTemplate"></property>--> <property name="dataSource" ref="dataSource"></property> </bean> </beans>
  • 相关阅读:
    “12306”的架构到底有多牛逼
    数字治理
    浅谈web网站架构演变过程
    MapReduce基本原理
    Flink+Hologres亿级用户实时UV精确去重最佳实践
    全链路压测体系建设方案的思考与实践
    如何做好一场技术演讲?
    “控本焦虑”的工程企业 用钉钉宜搭找到了低成本数字化的“捷径”
    友盟+《小程序用户增长白皮书》:从五个角度入手分析小程序数据
    数字化让618有了洞悉消费者内心的“大脑”
  • 原文地址:https://www.cnblogs.com/xiaonantianmen/p/9180224.html
Copyright © 2020-2023  润新知