Spring的数据库编程:jdbcTemplate

Posted nuist__NJUPT

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring的数据库编程:jdbcTemplate相关的知识,希望对你有一定的参考价值。

Spring的数据库编程:jdbcTemplate

  • 数据库编程是互联网编程的基础,Spring框架为开发者提供了JDBC模板模式,即jdbcTemplate,它可以用于简化很多代码,但是在实际工作中jdbcTemplate并不常用
  • 在工作中更多的时候使用Hibernate框架和Mybatis框架进行数据库编程
  • 使用Spring JDBC完成数据库编程主要使用到core包和dataSource包,
  • core包是核心功能包,dataSource是访问数据源的工具类包
  • 如果使用Spring JDBC操作数据库,需要进行配置
  • 使用update可以实现增删改操作,使用query可以实现查询操作

下面通过一个实例演示Spring JDBC的使用过程。
开发环境:IDEA+mysql
1-在MySQL中创建数据库spring,并在该数据库中创建表user,编码方式选择utf8,如下所示
在这里插入图片描述
2-在IDEA中创建一个名称为ch17的spring项目,导入相关jar包,所需jar包如下,(注:有些jar包是本次开发不需要的,系统也自动下载导入了)
在这里插入图片描述
3-在src目录下创建配置文件applicationContext1.xml,在该配置文件中配置数据源和JDBC模板。

<?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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    <!--指定需要扫描的包和子包,使注解生效-->
    <context:component-scan base-package="com.ch17"/>
    <!--配置数据源-->
    <bean id = "dataSource" class = "org.springframework.jdbc.datasource.DriverManagerDataSource">
    <!--MySQL数据驱动-->
        <property name="url" value="jdbc:mysql://localhost:3306/spring?characterEncoding=utf8"/>
        <!--连接数据库的用户名-->
        <property name = "username" value = "root"/>
        <!--连接数据库的密码-->
        <property name = "password" value = "123456"/>
    </bean>
    <!--配置JDBC模板-->
    <bean id = "jdbcTemplate" class = "org.springframework.jdbc.core.JdbcTemplate">
        <property name = "dataSource" ref = "dataSource"/>
    </bean>

    </beans>

3-在src目录下创建com.ch17包,在该报中创建实体类,该类的属性与数据表user的字段一致。

public class MyUser {
    private Integer uid ;
    private String uname, usex ;

    public void setUid(Integer uid) {
        this.uid = uid;
    }
    public Integer getUid(){
        return uid ;
    }
    public void setUname(String uname){
        this.uname = uname ;
    }
    public String getUname(){
        return uname ;
    }
    public void setUsex(String usex){
        this.usex = usex ;
    }
    public String getUsex(){
        return usex ;
    }
    public String toString(){
        return "myUser [uid=" + uid + ", uname=" + uname + ", usex=" + usex + "]" ;
    }
}

4-在com.ch17包中创建TestDao接口和实现类TestDaoImpl,在实现类中使用JDBC模块JdbcTeplate访问数据库,并将该类注解为Repository(“testDao”),使得注解生效,需要在配置文件中扫描

import java.util.List;

public interface TestDao {
    /**
     *
      * @param sql 数据库
     * @param param 参数素组
     * @return
     */
    public int update(String sql, Object [] param);
    public List<MyUser> query(String sql, Object [] param) ;
}

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Repository;

import java.util.List;
@Repository("testDao")
public class TestDaoImpl implements TestDao {


    //使用配置文件中的JDBC模板
    @Autowired
    private JdbcTemplate jdbcTemplate ;

    @Override
    public int update(String sql, Object[] param) {
        return jdbcTemplate.update(sql,param) ;
    }

    @Override
    public List<MyUser> query(String sql, Object[] param) {
        RowMapper <MyUser> rowMapper = new BeanPropertyRowMapper<>(MyUser.class) ;
        return jdbcTemplate.query(sql,rowMapper,param);
    }
}

5-在com.ch5包中创建测试类TestSpringJDBC,在主方法中调用数据访问层Dao中的方法,岁数据表user进行操作

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.util.List;

public class TestSpringJDBC {
    public static void main(String[] args){
        //初始化Spring容器,加载配置文件
        ApplicationContext appCon = new ClassPathXmlApplicationContext("applicationContext1.xml") ;
        //获取增强后的目标对象
        TestDao td = (TestDao) appCon.getBean("testDao") ;
        String insertSql = "insert into user values(?,?,?)" ;
        //param数组的值与insertSql语句的?一一对应
        Object [] param1 = {1,"王国栋1", "男"} ;
        Object [] param2 = {2,"刘亦菲2", "女"} ;
        Object [] param3 = {3,"胡歌3", "男"} ;
        Object [] param4 = {4,"李沁4", "女"} ;
        //添加用户
        td.update(insertSql,param1) ;
        td.update(insertSql,param2) ;
        td.update(insertSql,param3) ;
        td.update(insertSql,param4) ;
        //查询用户
        String selectSql = "select*from user" ;
        List <MyUser> list = td.query(selectSql,null) ;
        for(MyUser mu : list){
            System.out.println(mu) ;
        }
    }
}

6-运行结果如下:
在这里插入图片描述
7-可以在MySQL的管理软件Navicat Premium中看到插入的表user
在这里插入图片描述

以上是关于Spring的数据库编程:jdbcTemplate的主要内容,如果未能解决你的问题,请参考以下文章

Spring 从入门到精通系列 11—— Spring 中的 JdbcTemplate

spring5:JdbcTemplate

Spring--JdbcTemplate

Spring-- JdbcTemplate声明式事务

Spring JdbcTemplate详解

Spring JdbcTemplate详解