zoukankan      html  css  js  c++  java
  • JdbcTemplate(2)(数据连接池)

    一、使用具名参数的JdbcTemplate

    1.1 关于具名参数

      在HibernateHQL查询中我们体验过具名参数的使用,相对于基于位置的参数,具名参数具有更好的可维护性,在SQL语句中参数较多时可以考虑使用具名参数。在Spring中可以通过NamedParameterJdbcTemplate类的对象使用带有具名参数的SQL语句。

    1.2 通过IOC容器创建NamedParameterJdbcTemplate对象

    <!-- 配置可以使用具名参数的JDBCTemplate类对象 -->

    <bean 

    id="namedTemplate" 

    class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">

    <!-- 没有无参构造器,必须传入数据源或JdbcTemplate对象 -->

    <constructor-arg ref="dataSource"/>

    </bean>

     

    1.3 具名参数在SQL语句中的格式

    INSERT INTO depts (dept_name) VALUES (:deptName)

    1.4 具名参数传入

    ①通过Map对象传入

    NamedParameterJdbcTemplate.update(String, Map<String, ?>)

    Map的键是参数名,值是参数值

    ②通过SqlParameterSource对象传入

    String sql = "INSERT INTO depts (dept_name) VALUES (:deptName)";

    Department department = new Department(null, "YYY", null);

    SqlParameterSource sqlParameterSource =

    new BeanPropertySqlParameterSource(department);

    namedTemplate.update(sql, sqlParameterSource);

    二、 使用JdbcTemplate实现Dao

    2.1 通过IOC容器自动注入

    JdbcTemplate类是线程安全的,所以可以在IOC容器中声明它的单个实例,并将这个实例注入到所有的Dao实例中。

    @Repository

    public class EmployeeDao {

    @Autowired

    private JdbcTemplate jdbcTemplate;

    public Employee get(Integer id){

    //…

    }

    }

    2.2 扩展JdbcDaoSupport

    /**

     * 不推荐

     */

    @Repository

    public class DepartmentDao extends JdbcDaoSupport{

    @Autowired

    public void setDataSource2(DataSource dataSource){

    //父类提供的setDataSource()方法是final修饰的,不能通过覆盖的方式注入dataSource

    setDataSource(dataSource);

    }

    public Department get(Integer id){

    String sql = "SELECT id, dept_name name FROM departments WHERE id = ?";

    RowMapper<Department> rowMapper = new BeanPropertyRowMapper<>(Department.class);

    return getJdbcTemplate().queryForObject(sql, rowMapper, id);

    }

    }

  • 相关阅读:
    php环境下所有的配置文件以及作用
    获取登陆用户的ip
    curl模拟post和get请求
    linux 下安装php curl扩展
    php常用面试知识点
    git使用步骤
    laravel框架基础知识点
    ci框架基础知识点
    ajax
    Mysql 中需不需要commit
  • 原文地址:https://www.cnblogs.com/TYDBLOG/p/7445604.html
Copyright © 2011-2022 走看看