• 1.04 Spring JdbcTemplate类


    1.04Spring JdbcTemplate类

    什么是Spring JdbcTemplate类

    Spring针对数据库开发封装的JDBC

    作用:

    支持对数据库的所有操作

    Spring JdbcTemplate类配置模板

    <?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">
       <beans>
      <!-- 配置数据源 -->
      <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
               <!-- 数据库驱动 -->
               <property name="驱动名称" value="com.mysql.jdbc.Driver" />
               <!-- 连接数据库的url -->
               <property name="url" value="地址" />
               <!-- 连接数据库的用户名 -->
               <property name="username" value="用户名" />
               <!-- 连接数据库的密码 -->
               <property name="password" value="密码" />
      </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>

    对上述配置的解释:

    上诉配置定义了三个Bean

    • dataSource--->对应DriverManagerDataSource,对数据源进行配置

    • jdbcTemplate--->对应JdbcTemplate定义JdbcTemplate相关配置

    • 需要注入的Bean

    dataSource定义的四个属性
    属性名说明
    driverClassName 所使用的驱动名称,对应驱动 JAR 包中的 Driver 类
    url 数据源所在地址
    username 访问数据库的用户名
    password 访问数据库的密码
    JdbcTemplate定义的操作数据库的方法

    注意:

    定义JdbcTemplate时,需要将dataSource注入到JdbcTemplate

    在其他的类中要使用JdbcTemplate也需要将JdbcTemplate注入到使用类中(通常注入 dao 类中)

    JdbcTemplate类定义的方法:

    方法说明
    public int update(String sql) 用于执行新增、修改、删除等语句 args 表示需要传入到 query 中的参数
    public int update(String sql,Object... args) 用于执行新增、修改、删除等语句 args 表示需要传入到 query 中的参数
    public void execute(String sql) 可以执行任意 SQL,一般用于执行 DDL 语句 action 表示执行完 SQL 语句后,要调用的函数
    public T execute(String sql, PreparedStatementCallback action) 可以执行任意 SQL,一般用于执行 DDL 语句 action 表示执行完 SQL 语句后,要调用的函数
    public T query(String sql, ResultSetExtractor rse) 用于执行查询语句 以 ResultSetExtractor 作为参数的 query 方法返回值为 Object,使用查询结果需要对其进行强制转型 以 RowMapper 作为参数的 query 方法返回值为 List
    public List query(String sql, RowMapper rse) 用于执行查询语句 以 ResultSetExtractor 作为参数的 query 方法返回值为 Object,使用查询结果需要对其进行强制转型 以 RowMapper 作为参数的 query 方法返回值为 List

    JdbcTemplate举例:

    实现DAO层的方法

    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;
      }
       /* 构造器当中传方法,有点像闭包 */
    }

    配置Bean

    <?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"
       xmlns:aop="http://www.springframework.org/schema/aop"
       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 id="dataSource"
           class="org.springframework.jdbc.datasource.DriverManagerDataSource">
           <!--数据库驱动 -->
           <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" />
       </bean>
       <!--配置JDBC模板 -->
       <bean id="jdbcTemplate"
           class="org.springframework.jdbc.core.JdbcTemplate">
           <!--默认必须使用数据源 -->
           <property name="dataSource" ref="dataSource" />
       </bean>
       <bean id="userdao" class="com.practice.UserDaoImpl">
           <property name="jdbcTemplate" ref="jdbcTemplate" />
       </bean>
    </beans>

     

  • 相关阅读:
    年少时的"胡思乱想"
    daemon框架
    MVC框架,see again
    《Redis设计与实现》读书笔记
    小胖妞洗发水广告
    项目视图 Project Browser
    Unity 基础
    Unity手册-Unity概述
    rabbitmq 命令&& rabbitmq教程(一)
    C#动态方法调用 提高程序的扩展性
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/15819329.html
Copyright © 2020-2023  润新知