• Spring中JdbcTemplate的基础用法


    Spring中JdbcTemplate的基础用法

    1、在DAO中使用JdbcTemplate

    一般都是在DAO类中使用JdbcTimplate,在XML配置文件中配置好后,可以在DAO中注入即可。

     在Spring配置文件中配置DAO一般分为4个步骤:

    1、定义DataSource

    2、定义JdbcTimplate

    3、声明一个抽象的<bean>,以便所有的DAO复用配置JdbcTimplate属性的配置

    4、配置具体的DAO

    复制代码
     1  <!-- 配置事务管理器 --><!-- 扫描类包,将标注Spring注解的类自动转化Bean,同时完成Bean的注入 -->
     2     <context:component-scan base-package="com.smart.dao"/>
     3 
     4     <!-- 配置数据源 -->
     5     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
     6           destroy-method="close"
     7           p:driverClassName="${jdbc.driverClassName}"
     8           p:url="${jdbc.url}"
     9           p:username="${jdbc.name}"
    10           p:password="${jdbc.password}" />
    11 
    12     <!-- 配置Jdbc模板  -->
    13     <!--JdbcTemplate 拥有几个可用于控制底层的JDBC API的属性
    14       queryTimeout: 设置JdbcTimplate所创建的Statement查询数据时的最大超时时间,默认0
    15       fetchSize: 设置底层的ResultSet每次从数据库返回的行数。该属性对程序的影响很大,如果设置过大,
    16                   因为一次性载入的数据都放到内存中,所以内存消耗很大;反之相反。默认为0,Oracle驱动程序的默认值为10
    17       maxRows: 设置底层的ResultSet从数据库返回的最大行数,默认值为0。
    18       ignoreWarnings:是否忽略SQL的警告信息。默认true,即所有的警告信息都被记录到日志中;
    19                      如果为false,则JdbcTemplate将抛出SQLWarningException.
    20     -->
    21     <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"
    22           p:dataSource-ref="dataSource" />
    复制代码

    按照相同的方式可以方便的创建其他的DAO类,在Spring配置文件中定义JdbcTemplate并注入每个DAO中

    复制代码
     1 package com.smart.dao;
     2 
     3 import org.springframework.beans.factory.annotation.Autowired;
     4 import org.springframework.jdbc.core.JdbcTemplate;
     5 import org.springframework.stereotype.Repository;
     6 
     7 @Repository
     8 public class TestDao {
     9     private JdbcTemplate jdbcTemplate;
    10     @Autowired
    11     public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
    12         this.jdbcTemplate = jdbcTemplate;
    13     }
    14     public void initDb(){
    15         String sql = "create table test_user(user_id int primary key,user_name varchar(60))";
    16         jdbcTemplate.execute(sql);
    17     }
    18 }
    复制代码

     2、更改数据

    复制代码
     1 public void Insert(User user){
     2         String sql = "INSERT INTO test_user(user_id,user_name) VALUES(?,?)";
     3         /*
     4         1、int update(String sql) 为不提供占位符的SQL语句提供便利
     5         2、int update(String sql,Object[] args) 第二个参数定义了用于填充占位符的参数数组,即SQL语句中的?
     6         3、int update(String sql,PreparedStatementSetter pss):PreparedStatementSetter是一个回调接口,
     7            它定义了一个void setValues(PreparedStatement ps)接口方法。JdbcTemplate使用SQL语句创建出
     8            PreparedStatement实例后,将调用接口执行参数绑定。
     9              jdbcTemplate.update(sql,new PreparedStatementSetter(){
    10                public void setValues(PreparedStatement ps) throws SQLException{
    11                 ps.setInt(1,user.getUserId());
    12                 ps.setString(2,user.getUserName());
    13             }
    14         });
    15         4、如下,在2的基础上添加了第三个参数数组,用于显式的指定每个占位符所对应的字段数据类型
    16         */
    17         Object [] params = new Object[] {user.getUserId(),user.getUserName()};
    18         jdbcTemplate.update(sql,params,new int[]{Types.INTEGER,Types.VARCHAR});
    19     }
    复制代码

    User.class

    复制代码
     1 public class User implements Serializable{
     2  
     3     private int userId;
     4     private String userName;
     5     public int getUserId() {
     6         return userId;
     7     }
     8     public void setUserId(int userId) {
     9         this.userId = userId;
    10     }
    11     public String getUserName() {
    12         return userName;
    13     }
    14     public void setUserName(String userName) {
    15         this.userName = userName;
    16     }
    17   
    18 }
    复制代码
  • 相关阅读:
    Nmap绕过防火墙&脚本的使用
    Nmap在实战中的高级用法
    kali&BT安装好之后无法上网或者无法获得内网IP
    [转]谈渗透测试方法和流程
    xssless
    国内外有名的安全扫描工具,你知道几个?
    Linux下如果忘记了Mysql的root密码该怎么办?
    JSP手动注入 全
    sqlmap用户手册 [详细]
    Windows系统如何使用sqlmap
  • 原文地址:https://www.cnblogs.com/lwx521/p/7680406.html
Copyright © 2020-2023  润新知