Spring 如何使用JdbcTemplate类进行数据库操作呢?

Java-框架王 Spring 发布时间:2021-07-17 15:26:03 阅读数:1768 1
Spring框架为了数据库操作的便利,提供了JdbcTemplate类,下文讲述JdbcTemplate类的具体操作方法如下所示:

JdbcTemplate应用简介

JdbcTemplate使用需引入spring-jdbc-x.x.x.jar 包
和spring-tx-x.x.x.jar 包

spring-jdbc-x.x.x.jar 包的类全路径为org.springframework.jdbc.core.JdbcTemplate
spring-tx-x.x.x.jar 包应用于处理事务和异常

JdbcTemplate xml配置方法

  
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http:/www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd"> 
   
    <!-- 配置数据源 --> 
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <!--数据库驱动-->
        <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
        <!--连接数据库的url-->
        <property name= "url" value="jdbc:mysql://localhost/xx" />
        <!--连接数据库的用户名-->
        <property name="username" value="root" />
        <!--连接数据库的密码-->
        <property name="password" value="root" />
    </bean>
    <!--配置JDBC模板-->
    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <!--默认必须使用数据源-->
        <property name="dataSource" ref="dataSource"/>
    </bean>
    <!--配置注入类-->
    <bean id="xxx" class="xxx">
        <property name="jdbcTemplate" ref="jdbcTemplate"/>
    </bean>
    ...
</beans>


以上xml定义了三个bean,
分别为dataSource、jdbcTemplate 和需要注入类的 Bean
其中 dataSource 对应的是 DriverManagerDataSource 类,用于对数据源进行配置
jdbcTemplate 对应 JdbcTemplate 类,该类中定义了 JdbcTemplate 的相关配置
在 dataSource 中,定义连接数据库的相关属性
属性名 说明
driverClassName 所使用的驱动名称,对应驱动 JAR 包中的 Driver 类
url 数据源所在地址
username 访问数据库的用户名
password 访问数据库的密码
  在定义JdbcTemplate 时,
     需要将 dataSource 注入到 JdbcTemplate 中
      而在其他的类中要使用 JdbcTemplate,
    也需要将 JdbcTemplate 注入到使用类中(通常注入 dao 类中)

JdbcTemplate类中方法列表

常见的操作数据库方法
方法名 备注说明
public int update(String sql) 用于执行新增、修改、删除等语句 args 表示需要传入到 query 中的参数
public int update(String sql,Object... args)  
public void execute(String sql) 可以执行任意 SQL,一般用于执行 DDL 语句 action 表示执行完 SQL 语句后,要调用的函数
public T execute(String sql, PreparedStatementCallback action)  
public T query(String sql, ResultSetExtractor rse) 用于执行查询语句 以 ResultSetExtractor 作为参数的 query 方法返回值为 Object,使用查询结果需要对其进行强制转型 以 RowMapper 作为参数的 query 方法返回值为 list
public List query(String sql, RowMapper rse)  
  1. 创建 SpringDemo 项目
  2. 在 src 目录下创建 com.java265 包
  3. 导入 Spring 相关 JAR 包及 mysql-connector-java.x.x.x.jar 包
  4. 在 com.java265 包下创建 User、UserDao、UserDaoImpl、Beans.xml 和 MainApp
  5. 运行 SpringDemo 项目
User 类
package com.java265;
public class User {
    private int id;
    private String name;
    private int age;
    public User() {
    }
    public User(String name, Integer age) {
        this.name = name;
        this.age = age;
    }
    
    // 省略set和get方法
}

UserDao类文件
package com.java265;
import java.util.List;
public interface UserDao {
    /**
     * 初始化User表
     */
    void createUserTable();
    /**
     * 保存用户
     */
    void saveUser(User user);
    /**
     * 查询用户
     */
    List <User> listUser();
}

UserDaoImpl 类
package com.java265;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
public class UserDaoImpl implements UserDao {
    private JdbcTemplate jdbcTemplate;
    private UserDao userDao;
    public JdbcTemplate getJdbcTemplate() {
        return jdbcTemplate;
    }
    public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
        this.jdbcTemplate = jdbcTemplate;
    }
    public UserDao getUserDao() {
        return userDao;
    }
    public void setUserDao(UserDao userDao) {
        this.userDao = userDao;
    }
    public void setDataSource(DataSource datasource) {
        this.jdbcTemplate = new JdbcTemplate(datasource);
    }
    @Override
    public void createUserTable() {
        this.jdbcTemplate.execute("CREATE TABLE `user` (\r\n" + "  `id` int(11) NOT NULL AUTO_INCREMENT,\r\n"
                + "  `name` varchar(50) DEFAULT NULL,\r\n" + "  `age` int(11) DEFAULT NULL,\r\n"
                + "  PRIMARY KEY (`id`)\r\n" + ") ENGINE=MyISAM DEFAULT CHARSET=utf8;");
    }
    @Override
    public void saveUser(User user) {
        this.jdbcTemplate.update("INSERT INTO USER(NAME,age) VALUES (?,?)", user.getName(), user.getAge());
    }
    @Override
    public List<User> listUser() {
        List<User> users = this.jdbcTemplate.query("SELECT NAME,age FROM USER", new RowMapper<User>() {
            public User mapRow(ResultSet rs, int rowNum) throws SQLException {
                User user = new User();
                user.setName(rs.getString("name"));
                user.setAge(rs.getInt("age"));
                return user;
            }
        });
        return users;
    }
}

Beans.xml

<!--?xml version="1.0" encoding="UTF-8"?-->
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    http://www.springframework.org/schema/context
     http://www.springframework.org/schema/context/spring-context.xsd
    http://www.springframework.org/schema/aop
    http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
    <!-- 配置数据源 -->
    <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
        <!--数据库驱动 -->
        <property name="driverClassName" value="com.mysql.jdbc.Driver">
        <!--连接数据库的url -->
        <property name="url" value="jdbc:mysql://localhost/test">
        <!--连接数据库的用户名 -->
        <property name="username" value="root">
        <!--连接数据库的密码 -->
        <property name="password" value="root">
    </property></property></property></property></bean>
    <!--配置JDBC模板 -->
    <bean class="org.springframework.jdbc.core.JdbcTemplate" id="jdbcTemplate">
        <!--默认必须使用数据源 -->
        <property name="dataSource" ref="dataSource">
    </property></bean>
    <bean class="com.java265.UserDaoImpl" id="userdao">
        <property name="jdbcTemplate" ref="jdbcTemplate">
    </property></bean>
</beans>

MainApp 类
package com.java265;
import java.util.List;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MainApp {
    public static void main(String[] args) {
        ApplicationContext ctx = new ClassPathXmlApplicationContext("Beans.xml");
        UserDao dao = (UserDao) ctx.getBean("userdao");
        dao.createUserTable();
        dao.saveUser(new User("java265.com",888));
        dao.saveUser(new User("test2",999));
        List users = dao.listUser();
        for (User user : users) {
            System.out.println("姓名:" + user.getName() + "\t年龄:" + user.getAge());
        }
    }
}

运行结果---
姓名:java265.com 年龄:888
姓名:baidu 年龄:999
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaFramework/Spring/202107/520.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者