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


    转自:

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

    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配置方法

    1. "1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3.     xmlns:xsi="http:/www.w3.org/2001/XMLSchema-instance"
    4.     xsi:schemaLocation="http://www.springframework.org/schema/beans
    5.     http://www.springframework.org/schema/beans/spring-beans.xsd"
    6.    
    7.      
    8.     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    9.        
    10.         <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
    11.        
    12.         <property name= "url" value="jdbc:mysql://localhost/xx" />
    13.        
    14.         <property name="username" value="root" />
    15.        
    16.         <property name="password" value="root" />
    17.     bean>
    18.    
    19.     <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    20.        
    21.         <property name="dataSource" ref="dataSource"/>
    22.     bean>
    23.    
    24.     <bean id="xxx" class="xxx">
    25.         <property name="jdbcTemplate" ref="jdbcTemplate"/>
    26.     bean>
    27.     ...
    28. 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 类

    1. package com.java265;
    2. public class User {
    3. private int id;
    4. private String name;
    5. private int age;
    6. public User() {
    7. }
    8. public User(String name, Integer age) {
    9. this.name = name;
    10. this.age = age;
    11. }
    12. // 省略set和get方法
    13. }

    UserDao类文件

    1. package com.java265;
    2. import java.util.List;
    3. public interface UserDao {
    4. /**
    5. * 初始化User表
    6. */
    7. void createUserTable();
    8. /**
    9. * 保存用户
    10. */
    11. void saveUser(User user);
    12. /**
    13. * 查询用户
    14. */
    15. List listUser();
    16. }

    UserDaoImpl 类

    1. package com.java265;
    2. import java.sql.ResultSet;
    3. import java.sql.SQLException;
    4. import java.util.List;
    5. import javax.sql.DataSource;
    6. import org.springframework.jdbc.core.JdbcTemplate;
    7. import org.springframework.jdbc.core.RowMapper;
    8. public class UserDaoImpl implements UserDao {
    9. private JdbcTemplate jdbcTemplate;
    10. private UserDao userDao;
    11. public JdbcTemplate getJdbcTemplate() {
    12. return jdbcTemplate;
    13. }
    14. public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
    15. this.jdbcTemplate = jdbcTemplate;
    16. }
    17. public UserDao getUserDao() {
    18. return userDao;
    19. }
    20. public void setUserDao(UserDao userDao) {
    21. this.userDao = userDao;
    22. }
    23. public void setDataSource(DataSource datasource) {
    24. this.jdbcTemplate = new JdbcTemplate(datasource);
    25. }
    26. @Override
    27. public void createUserTable() {
    28. this.jdbcTemplate.execute("CREATE TABLE `user` (\r\n" + " `id` int(11) NOT NULL AUTO_INCREMENT,\r\n"
    29. + " `name` varchar(50) DEFAULT NULL,\r\n" + " `age` int(11) DEFAULT NULL,\r\n"
    30. + " PRIMARY KEY (`id`)\r\n" + ") ENGINE=MyISAM DEFAULT CHARSET=utf8;");
    31. }
    32. @Override
    33. public void saveUser(User user) {
    34. this.jdbcTemplate.update("INSERT INTO USER(NAME,age) VALUES (?,?)", user.getName(), user.getAge());
    35. }
    36. @Override
    37. public List listUser() {
    38. List users = this.jdbcTemplate.query("SELECT NAME,age FROM USER", new RowMapper() {
    39. public User mapRow(ResultSet rs, int rowNum) throws SQLException {
    40. User user = new User();
    41. user.setName(rs.getString("name"));
    42. user.setAge(rs.getInt("age"));
    43. return user;
    44. }
    45. });
    46. return users;
    47. }
    48. }

    Beans.xml

    1. <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
    2.     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    3.     http://www.springframework.org/schema/context
    4.      http://www.springframework.org/schema/context/spring-context.xsd
    5.     http://www.springframework.org/schema/aop
    6.     http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
    7.    
    8.     <bean class="org.springframework.jdbc.datasource.DriverManagerDataSource" id="dataSource">
    9.        
    10.         <property name="driverClassName" value="com.mysql.jdbc.Driver">
    11.        
    12.         <property name="url" value="jdbc:mysql://localhost/test">
    13.        
    14.         <property name="username" value="root">
    15.        
    16.         <property name="password" value="root">
    17.     property>property>property>property>bean>
    18.    
    19.     <bean class="org.springframework.jdbc.core.JdbcTemplate" id="jdbcTemplate">
    20.        
    21.         <property name="dataSource" ref="dataSource">
    22.     property>bean>
    23.     <bean class="com.java265.UserDaoImpl" id="userdao">
    24.         <property name="jdbcTemplate" ref="jdbcTemplate">
    25.     property>bean>
    26. beans>

    MainApp 类

    1. package com.java265;
    2. import java.util.List;
    3. import org.springframework.context.ApplicationContext;
    4. import org.springframework.context.support.ClassPathXmlApplicationContext;
    5. public class MainApp {
    6. public static void main(String[] args) {
    7. ApplicationContext ctx = new ClassPathXmlApplicationContext("Beans.xml");
    8. UserDao dao = (UserDao) ctx.getBean("userdao");
    9. dao.createUserTable();
    10. dao.saveUser(new User("java265.com",888));
    11. dao.saveUser(new User("test2",999));
    12. List users = dao.listUser();
    13. for (User user : users) {
    14. System.out.println("姓名:" + user.getName() + "\t年龄:" + user.getAge());
    15. }
    16. }
    17. }

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

  • 相关阅读:
    Redis-哨兵模式
    C高级day1
    常用胶水介绍
    大数据管道聚合并分页 有什么调优方案
    mysql数据文件
    unity 编辑器时读取FairyGUI图集单个图像
    Vue3 - 路由 Vue-router 4.X(配置与使用教程)
    剑指 Offer 24. 反转链表【链表】
    import { ref, onMounted, reactive } from ‘vue‘
    STM32F4串口USART发送为00的解决方案
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/127682231