Spring框架学习笔记4-----JdbcTemplate

目录

 

1、JdbcTemplate简介

2、搭建环境

2.1、创建表

2.2、需要的jar包

2.3、javabean

3、使用api(了解)

4、配置DBCP

4.1、Dao层

4.2、配置文件

4.3、测试类 

5、配置C3P0

5.1、Dao层

5.2、配置文件

5.3、测试类

6、使用JdbcDaoSupport

6.1、Dao层

6.2、配置文件

6.3、测试类

7、配置properties

7.1、properties文件

7.2、Dao层

7.3、配置文件

7.4、测试类


1、JdbcTemplate简介

  • spring提供用于操作JDBC工具类,类似:DBUtils
  • 依赖 连接池DataSource(数据源)

2、搭建环境

2.1、创建表

创建一张t_user表,并插入数据
create table t_user(
id int primary key auto_increment,
username varchar(50),
password varchar(32)
);
insert into t_user values(1,'jack','1234'),(2,'rose','5678');

2.2、需要的jar包

2.3、javabean

/*
create table t_user(
id int primary key auto_increment,
username varchar(50),
password varchar(32)
);
 */
public class User {
    private Integer id;
    private String username;
    private String password;
    public Integer getId(){
        return id;
    }
    public String getUsername(){
        return username;
    }
    public String getPassword(){
        return password;
    }

    public void setId(Integer id){
        this.id = id;
    }
    public void setUsername(String username){
        this.username = username;
    }
    public void setPassword(String password){
        this.password = password;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ",username=" + username + ",password=" + password + "]";
    }
}

3、使用api(了解)

public class TestApi {
    public  static void main(String[] args) {
        //1、创建数据源(连接池)使用dbcp
        BasicDataSource dataSource = new BasicDataSource();
        //基本四要素:
        dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/spring_jdbc");
        dataSource.setUsername("root");
        dataSource.setPassword("hmx123456");
        //2、创建模版
        JdbcTemplate jdbcTemplate = new JdbcTemplate();
        jdbcTemplate.setDataSource(dataSource);
        //3、通过api操作(插入信息)
        jdbcTemplate.update("insert into t_user(username,password) values ('?','?')","tom","3333");
    }
}

4、配置DBCP

4.1、Dao层

public class UserDao {
    //jdbc的模版将由spring注入 提供setter 和 getter方法
    private JdbcTemplate jdbcTemplate;
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
    public void update(User user){
        String sql = "update t_user set username = ?,password = ? where id = ?";
        Object[] args = {user.getUsername(),user.getPassword(),user.getId()};//参数
        jdbcTemplate.update(sql,args);
    }
}

4.2、配置文件

<?xml version="1.0" encoding="UTF-8"?>
<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"
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    					http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.springframework.org/schema/aop 
                        http://www.springframework.org/schema/aop/spring-aop.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context.xsd">
    <!--配置数据源
        BasicDataSource dataSource = new BasicDataSource();
        1、dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        2、dataSource.setUrl("jdbc:mysql://localhost:3306/spring_jdbc");
        3、dataSouruce.setUsername("root");
        4、dataSource.setPassword("hmx123456");
    -->
    <bean id = "dataSourceId" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value = "com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/spring_jdbc"></property>
        <property name="username" value = "root"></property>
        <property name="password" value = "hmx123456"></property>
    </bean>


    <!--创建模版
        JdbcTemplate jdbcTemplate = new JdbcTemplate();
        jdbcTemplate.setDataSource(dataSource);
    -->
    <bean id = "jdbcTemplateId" class = "org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref = "dataSourceId"></property>
    </bean>
    
    
    <!--配置dao
    private JdbcTemplate jdbcTemplate;
    -->
    <bean id = "userDaoId" class="test_jdbc_c_dbcp.UserDao">
        <property name="jdbcTemplate" ref = "jdbcTemplateId"></property>
    </bean>
    
</beans>

4.3、测试类 

public class TestDBCP {
    @Test
    public void demo01(){
        User user = new User();
        user.setId(1);
        user.setUsername("jack01");
        user.setPassword("11111");
        String xmlPath = "test_jdbc_c_dbcp/applicationContext.xml";
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
        UserDao userDao = applicationContext.getBean("userDaoId",UserDao.class);
        userDao.update(user);
    }
}

5、配置C3P0

5.1、Dao层

public class UserDao {
    private JdbcTemplate jdbcTemplate;
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
    //更新数据库操作
    public void update(User user){
        String sql = "update t_user set username = ?,password = ? where id = ? ";//sql语句
        Object[] args = {user.getUsername(),user.getPassword(),user.getId()};//参数
        jdbcTemplate.update(sql,args);
    }
    //查询所有
    public List<User> selectAll(){
        //String sql = "select * from t_user";//查询所有的sql语句
         return jdbcTemplate.query("select * from t_user", BeanPropertyRowMapper.newInstance(User.class));
    }
}

5.2、配置文件

<?xml version="1.0" encoding="UTF-8"?>
<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"
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    					http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.springframework.org/schema/aop 
                        http://www.springframework.org/schema/aop/spring-aop.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context.xsd">
    <!--配置C3P0数据源
        BasicDataSource dataSource = new BasicDataSource();
        1、dataSource.setDriverName("com.mysql.jdbc.Driver");
        2、dataSource.setJdbcurl("jdbc:mysql://localhost:3306/spring_jdbc");
        3、dataSouruce.setUser("root");
        4、dataSource.setPassword("hmx123456");
        c3p0要配置的属性名与DBCP不同,内容相同
    -->
    <bean id = "dataSourceId" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
        <property name="jdbcUrl" value = "jdbc:mysql://localhost:3306/spring_jdbc"></property>
        <property name="user"  value = "root"></property>
        <property name="password" value = "hmx123456"></property>
    </bean>


    <!--创建模版
        JdbcTemplate jdbcTemplate = new JdbcTemplate();
        jdbcTemplate.setDataSource(dataSource);
    -->
    <bean id = "jdbcTemplateId" class = "org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref = "dataSourceId"></property>
    </bean>

    <!--配置dao
    private JdbcTemplate jdbcTemplate;
    -->
    <bean id = "userDaoId" class="test_jdbc_d_c3p0.UserDao">
        <property name="jdbcTemplate" ref = "jdbcTemplateId"></property>
    </bean>

</beans>

5.3、测试类

public class TestC3P0 {
    @Test
    public void demo01(){
        User user = new User();
        user.setId(1);;
        user.setUsername("jack01");
        user.setPassword("11111");
        String xmlPath = "test_jdbc_d_c3p0/applicationContext.xml";
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
        UserDao userDao = applicationContext.getBean("userDaoId",UserDao.class);
        userDao.update(user);
        List<User> list = userDao.selectAll();
        for(User x : list){
            System.out.println(x);
        }
    }
}

 

6、使用JdbcDaoSupport

6.1、Dao层

public class UserDao extends JdbcDaoSupport {
    /*
    JdbcDaoSupport类中提供了模版,直接拿过来用就行
    子类继承父类:使用this或者super都可以
    this是先找子类,子类没有再找父类,super是直接找父类
     */
    public void update(User user){
        String sql = "update t_user set username = ?,password = ? where id = ?";
        Object[] args = {user.getUsername(),user.getPassword(),user.getId()};
        super.getJdbcTemplate().update(sql,args);
    }
    public List<User> selectAll(){
        String str = "select * from t_user";
        return super.getJdbcTemplate().query(str, BeanPropertyRowMapper.newInstance(User.class));
    }
}

6.2、配置文件

<?xml version="1.0" encoding="UTF-8"?>
<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"
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    					http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.springframework.org/schema/aop 
                        http://www.springframework.org/schema/aop/spring-aop.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context.xsd">
    <!--配置数据源c3p0
        BasicDataSource dataSource = new BasicDataSource();
        1、dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        2、dataSource.setUrl("jdbc:mysql://localhost:3306/spring_jdbc");
        3、dataSouruce.setUsername("root");
        4、dataSource.setPassword("hmx123456");
    -->
    <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/spring_jdbc"></property>
        <property name="user" value="root"></property>
        <property name="password" value="hmx123456"></property>
    </bean>

    <!-- 配置dao
    dao层继承了JdbcDaoSupport,之后只需要注入数据源,底层将自动的创建模版
    可以查看setDataSource方法的源码
    -->
    <bean id="userDaoId" class="test_jdbc_e_jdbcdaosupport.UserDao">
        <property name="dataSource" ref = "dataSource"></property>
    </bean>

</beans>

6.3、测试类

public class TestJdbcDaoSupport {
    @Test
    public void demo(){
        User user = new User();
        user.setId(2);
        user.setUsername("rose");
        user.setPassword("2222");
        String xmlPath = "test_jdbc_e_jdbcdaosupport/applicationContext.xml";
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext(xmlPath);
        UserDao userDao = applicationContext.getBean("userDaoId",UserDao.class);
        userDao.update(user);
        List<User> list = userDao.selectAll();
        for(User x:list){
            System.out.println(x);
        }
    }
}

7、配置properties

7.1、properties文件

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.jdbcUrl=jdbc:mysql://localhost:3306/spring_jdbc
jdbc.user=root
jdbc.password=hmx123456

7.2、Dao层

public class UserDao extends JdbcDaoSupport {
    public List<User> selectAll(){
        return super.getJdbcTemplate().query("select * from t_user", BeanPropertyRowMapper.newInstance(User.class));
    }
    //通过id查询
    public User getById(int i){
        return super.getJdbcTemplate().queryForObject("select * from t_user where id = ?",BeanPropertyRowMapper.newInstance(User.class),1);
    }
}

7.3、配置文件

<?xml version="1.0" encoding="UTF-8"?>
<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"
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    					http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.springframework.org/schema/aop 
                        http://www.springframework.org/schema/aop/spring-aop.xsd
                        http://www.springframework.org/schema/context
                        http://www.springframework.org/schema/context/spring-context.xsd">
    <!--配置数据源c3p0
        BasicDataSource dataSource = new BasicDataSource();
        1、dataSource.setDriverClassName("com.mysql.jdbc.Driver");
        2、dataSource.setUrl("jdbc:mysql://localhost:3306/spring_jdbc");
        3、dataSouruce.setUsername("root");
        4、dataSource.setPassword("hmx123456");
    -->
    <!--加载配置文件
    classpath:该前缀表示在src下
    在配置文件之后,通过${key}获得
    -->
    <context:property-placeholder location="classpath:test_jdbc_f_properties/jdbcInfo.properties"></context:property-placeholder>
    <bean id = "dataSource" class = "com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driverClass}"></property>
        <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
        <property name="user" value="${jdbc.user}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

    <!-- 配置dao
    dao层继承了JdbcDaoSupport,之后只需要注入数据源,底层将自动的创建模版
    可以查看setDataSource方法的源码
    -->
    <bean id="userDaoId" class="test_jdbc_f_properties.UserDao">
        <property name="dataSource" ref = "dataSource"></property>
    </bean>

</beans>

7.4、测试类

public class TestProperties {
    @Test
    public void demo(){
        ApplicationContext applicationContext = new ClassPathXmlApplicationContext("test_jdbc_f_properties/applicationContext.xml");
        UserDao userDao = (UserDao)applicationContext.getBean("userDaoId");
        System.out.println(userDao.getById(1));

    }
}

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值