Spring学习笔记-04——JDBCTemplate

Spring学习笔记——JDBCTemplate

参考:【狂神说Java】Spring5最新完整教程IDEA版通俗易懂
尚硅谷-Spring5框架2020最新版教程

1. 说明

  • 为了使JDBC 更加易于使用,Spring 在JDBC API 上定义了一个抽象层,以此建立一个JDBC
    存取框架。
  • 作为Spring JDBC 框架的核心,JDBC 模板的设计目的是为不同类型的JDBC 操作提供模
    板方法,通过这种方式,可以在尽可能保留灵活性的情况下,将数据库存取的工作量降到最
    低。
  • 可以将Spring 的JdbcTemplate 看作是一个小型的轻量级持久化层框架,相当于spring帮我们写好的DBUtils。

2. 环境配置

  1. 导入jar包

            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-webmvc</artifactId>
                <version>5.2.7.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework</groupId>
                <artifactId>spring-jdbc</artifactId>
                <version>5.2.7.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.20</version>
            </dependency>
            <dependency>
                <groupId>com.mchange</groupId>
                <artifactId>c3p0</artifactId>
                <version>0.9.5.5</version>
            </dependency>
            <dependency>
                <groupId>org.apache.commons</groupId>
                <artifactId>commons-dbcp2</artifactId>
                <version>2.7.0</version>
            </dependency>
    
  2. 编写数据库配置文件db.properties

    driver=com.mysql.cj.jdbc.Driver
    url=jdbc:mysql://localhost:3306/jdbctemplate?serverTimezone=Asia/Shanghai&useSSL=true&useUnicode=true&characterEncoding=UTF-8
    username=root
    password=root
    
  3. 引入配置文件

    <context:property-placeholder location="classpath:db.properties"/>
    
  4. 配置c3p0数据源

    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="user" value="${user}"/>
        <property name="password" value="${password}"/>
        <property name="jdbcUrl" value="${jdbcUrl}"/>
        <property name="driverClass" value="${driverClass}"/>
    </bean>
    
  5. 配置dbcp数据源

    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
        <property name="username" value="${user}"/>
        <property name="password" value="${password}"/>
        <property name="url" value="${jdbcUrl}"/>
        <property name="driverClassName" value="${driverClass}"/>
    </bean>
    
  6. 创建JdbcTemplate 对象

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource" ref="dataSource"/>
    </bean>
    
  7. 获取JdbcTemplate 对象

    ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml");
    JdbcTemplate template = (JdbcTemplate) context.getBean("jdbcTemplate");
    
  8. 创建数据库,并创建表

    create database jdbctemplate;
    create table user(
        id int,
        name varchar(30)
    )
    
  9. 编写数据库映射对象

    public class User {
        int id;
        String name;
    }
    

3. 操作数据库

  1. 执行操作

    • JdbcTemplate.update(String, Object...)
    • 参数:(sql语句)
    template.execute("insert INTO user VALUES (1,'NaClO')");
    
  2. 更新操作

    • JdbcTemplate.update(String, Object...)
    • (sql语句,参数列表)
    template.update("insert INTO test VALUES (?,?)",1,"NaClO");
    template.update("delete from user where id=?",1);
    template.update("update user set name=? where id=?","666",1);
    
  3. 查询操作

    1. 查询单行

      • JdbcTemplate.queryForObject(String, RowMapper<Department>, Object...)

      • 参数:(sql语句,自己编写的RowMapper,参数列表)

        UserRowMapper

        public class UserRowMapper implements RowMapper<User> {
            @Override
            public User mapRow(ResultSet rs, int rowNum) throws SQLException {
                User user = new User();
                user.setId(rs.getInt("id"));
                user.setName(rs.getString("name"));
                return user;
            }
        }
        
        User user = template.queryForObject("select * from user", new UserRowMapper());
        
    2. 查询多行

      • JdbcTemplate.query(String, RowMapper<Department>, Object...)

      • 参数:(sql语句,自己编写的RowMapper,参数列表)

        List<User> userList = template.query("select * from user", new UserRowMapper());
        
    3. 查询单一值

      • JdbcTemplate.queryForObject(String, Class, Object...)

      • 参数:(sql语句,返回值的类,参数列表)

        Integer id = template.queryForObject("select id from user", Integer.class);
        
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值