zoukankan      html  css  js  c++  java
  • JdbcTemplate

                         

                        1、使用JdbcTemplate的execute()方法执行SQL语句

    Java代码  收藏代码
    1. jdbcTemplate.execute("CREATE TABLE USER (user_id integer, name varchar(100))");  

    2、如果是UPDATE或INSERT,可以用update()方法。

    Java代码  收藏代码
    1. jdbcTemplate.update("INSERT INTO USER VALUES('"  
    2.            + user.getId() + "', '"  
    3.            + user.getName() + "', '"  
    4.            + user.getSex() + "', '"  
    5.            + user.getAge() + "')");  

    3、带参数的更新

    Java代码  收藏代码
    1. jdbcTemplate.update("UPDATE USER SET name = ? WHERE user_id = ?", new Object[] {name, id});  
    Java代码  收藏代码
    1. jdbcTemplate.update("INSERT INTO USER VALUES(?, ?, ?, ?)", new Object[] {user.getId(), user.getName(), user.getSex(), user.getAge()});  

    4、使用JdbcTemplate进行查询时,使用queryForXXX()等方法

    Java代码  收藏代码
    1. int count = jdbcTemplate.queryForInt("SELECT COUNT(*) FROM USER");  
    Java代码  收藏代码
    1. String name = (String) jdbcTemplate.queryForObject("SELECT name FROM USER WHERE user_id = ?", new Object[] {id}, java.lang.String.class);  
    Java代码  收藏代码
    1. List rows = jdbcTemplate.queryForList("SELECT * FROM USER");  
    Java代码  收藏代码
    1. List rows = jdbcTemplate.queryForList("SELECT * FROM USER");  
    2. Iterator it = rows.iterator();  
    3. while(it.hasNext()) {  
    4.     Map userMap = (Map) it.next();  
    5.     System.out.print(userMap.get("user_id") + " ");  
    6.     System.out.print(userMap.get("name") + " ");  
    7.     System.out.print(userMap.get("sex") + " ");  
    8.     System.out.println(userMap.get("age") + " ");  
    9. }  

       JdbcTemplate将我们使用的JDBC的流程封装起来,包括了异常的捕捉、SQL的执行、查询结果的转换等等。spring大量使用Template Method模式来封装固定流程的动作,XXXTemplate等类别都是基于这种方式的实现。
        除了大量使用Template Method来封装一些底层的操作细节,spring也大量使用callback方式类回调相关类别的方法以提供JDBC相关类别的功能,使传统的JDBC的使用者也能清楚了解spring所提供的相关封装类别方法的使用。
    JDBC的PreparedStatement

    Java代码  收藏代码
    1. final String id = user.getId();  
    2. final String name = user.getName();  
    3. final String sex = user.getSex() + "";  
    4. final int age = user.getAge();  
    5.   
    6. jdbcTemplate.update("INSERT INTO USER VALUES(?, ?, ?, ?)",  
    7.                      new PreparedStatementSetter() {  
    8.                          public void setValues(PreparedStatement ps) throws SQLException {  
    9.                              ps.setString(1, id);  
    10.                              ps.setString(2, name);            
    11.                              ps.setString(3, sex);  
    12.                              ps.setInt(4, age);  
    13.                          }  
    14.                      });  
    Java代码  收藏代码
    1. final User user = new User();  
    2. jdbcTemplate.query("SELECT * FROM USER WHERE user_id = ?",  
    3.                     new Object[] {id},  
    4.                     new RowCallbackHandler() {  
    5.                         public void processRow(ResultSet rs) throws SQLException {  
    6.                             user.setId(rs.getString("user_id"));  
    7.                             user.setName(rs.getString("name"));  
    8.                             user.setSex(rs.getString("sex").charAt(0));  
    9.                             user.setAge(rs.getInt("age"));  
    10.                         }  
    11.                     });  
    Java代码  收藏代码
    1. class UserRowMapper implements RowMapper {  
    2.     public Object mapRow(ResultSet rs, int index) throws SQLException {  
    3.         User user = new User();  
    4.   
    5.         user.setId(rs.getString("user_id"));  
    6.         user.setName(rs.getString("name"));  
    7.         user.setSex(rs.getString("sex").charAt(0));  
    8.         user.setAge(rs.getInt("age"));  
    9.   
    10.         return user;  
    11.     }  
    12. }  
    13.   
    14. public List findAllByRowMapperResultReader() {  
    15.     String sql = "SELECT * FROM USER";  
    16.     return jdbcTemplate.query(sql, new RowMapperResultReader(new UserRowMapper()));  
    17. }  

    在getUser(id)里面使用UserRowMapper

    Java代码  收藏代码
    1. public User getUser(final String id) throws DataAccessException {  
    2.     String sql = "SELECT * FROM USER WHERE user_id=?";  
    3.     final Object[] params = new Object[] { id };  
    4.     List list = jdbcTemplate.query(sql, params, new RowMapperResultReader(new UserRowMapper()));  
    5.   
    6.     return (User) list.get(0);  
    7. }  

    网上收集
    org.springframework.jdbc.core.PreparedStatementCreator 返回预编译SQL   不能于Object[]一起用

    Java代码  收藏代码
    1. public PreparedStatement createPreparedStatement(Connection con) throws SQLException {  
    2.  return con.prepareStatement(sql);  
    3. }  

    1.增删改
    org.springframework.jdbc.core.JdbcTemplate   类(必须指定数据源dataSource)

    Java代码  收藏代码
    1. template.update("insert into web_person values(?,?,?)",Object[]);  

    Java代码  收藏代码
    1. template.update("insert into web_person values(?,?,?)",new PreparedStatementSetter(){ 匿名内部类 只能访问外部最终局部变量  
    2.   
    3.  public void setValues(PreparedStatement ps) throws SQLException {  
    4.   ps.setInt(index++,3);  
    5. });  

    org.springframework.jdbc.core.PreparedStatementSetter 接口 处理预编译SQL

    Java代码  收藏代码
    1. public void setValues(PreparedStatement ps) throws SQLException {  
    2.  ps.setInt(index++,3);  
    3. }  

    2.查询JdbcTemplate.query(String,[Object[]/PreparedStatementSetter],RowMapper/RowCallbackHandler)
    org.springframework.jdbc.core.RowMapper   记录映射接口  处理结果集

    Java代码  收藏代码
    1. public Object mapRow(ResultSet rs, int arg1) throws SQLException {   int表当前行数  
    2.   person.setId(rs.getInt("id"));  
    3. }  
    4. List template.query("select * from web_person where id=?",Object[],RowMapper);  

    org.springframework.jdbc.core.RowCallbackHandler  记录回调管理器接口 处理结果集

    Java代码  收藏代码
      1. template.query("select * from web_person where id=?",Object[],new RowCallbackHandler(){  
      2.  public void processRow(ResultSet rs) throws SQLException {  
      3.   person.setId(rs.getInt("id"));  
      4. });  
  • 相关阅读:
    PHP 开发 APP 接口 学习笔记与总结
    Java实现 LeetCode 43 字符串相乘
    Java实现 LeetCode 43 字符串相乘
    Java实现 LeetCode 43 字符串相乘
    Java实现 LeetCode 42 接雨水
    Java实现 LeetCode 42 接雨水
    Java实现 LeetCode 42 接雨水
    Java实现 LeetCode 41 缺失的第一个正数
    Java实现 LeetCode 41 缺失的第一个正数
    Java实现 LeetCode 41 缺失的第一个正数
  • 原文地址:https://www.cnblogs.com/fengchaowang/p/4058903.html
Copyright © 2011-2022 走看看