• 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

  • 相关阅读:
    Python中property属性、with语句及上下文管理器使用方法代码
    【Linux】解决切换用户出现bash-4.2$问题
    差分信号变送器模块使用说明
    Yii2使用composer安装MongoDB扩展
    设计师必备!5款一键抠图神器,让你轻松实现抠图需求!
    C++11 function、bind、可变参数模板
    基于Java的学生学籍管理系统设计与实现(源码+lw+部署文档+讲解等)
    数码管的静态显示(二)
    C语言 — _getch() 和 system(“pause“)
    常见的js手写题【总结】
  • 原文地址:https://blog.csdn.net/qq_25073223/article/details/127682231