加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

spring之操作数据库之使用NamedParameterJdbcTemplate(具名参数

发布时间:2020-12-15 01:13:09 所属栏目:大数据 来源:网络整理
导读:接上一节:https://www.cnblogs.com/xiximayou/p/12167150.html。 在applicationContext.xml中配置namedParameterJdbcTemplate。 !-- 配置 NamedParameterJdbcTemplate,该对象可以使用具名参数,其没有无参数的构造器,所以必须为其构造器指定参数 -- bean id

接上一节:https://www.cnblogs.com/xiximayou/p/12167150.html。

在applicationContext.xml中配置namedParameterJdbcTemplate。

    <!-- 配置 NamedParameterJdbcTemplate,该对象可以使用具名参数,其没有无参数的构造器,所以必须为其构造器指定参数 -->
    <bean id="namedParameterJdbcTemplate"
        class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
        constructor-arg ref="dataSource"></constructor-arg>    
    </bean>

在JDBCTest.java中进行测试:

    private ApplicationContext ctx = null;
    private JdbcTemplate jdbcTemplate;
     EmployeeDao employeeDao;
     DepartmentDao departmentDao;
     NamedParameterJdbcTemplate namedParameterJdbcTemplate;
    {
        ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
        jdbcTemplate = (JdbcTemplate) ctx.getBean("jdbcTemplate");
        employeeDao = ctx.getBean(EmployeeDao.class);
        departmentDao = ctx.getBean(DepartmentDao.);
        namedParameterJdbcTemplate = ctx.getBean(NamedParameterJdbcTemplate.);
    }
    
    /**
     * 可以为参数起名字. 
     * 1. 好处: 若有多个参数,则不用再去对应位置,直接对应参数名,便于维护
     * 2. 缺点: 较为麻烦. 
     */
    @Test
    public void testNamedParameterJdbcTemplate(){
        String sql = "INSERT INTO employees(last_name,email,dept_id) VALUES(:ln,:email,:deptid)";
        
        Map<String,Object> paramMap = new HashMap<>();
        paramMap.put("ln","FF");
        paramMap.put("email","ff@atguigu.com");
        paramMap.put("deptid",2);
        
        namedParameterJdbcTemplate.update(sql,paramMap);
    }
    
     * 使用具名参数时,可以使用 update(String sql,SqlParameterSource paramSource) 方法进行更新操作
     * 1. SQL 语句中的参数名和类的属性一致!
     * 2. 使用 SqlParameterSource 的 BeanPropertySqlParameterSource 实现类作为参数. 
      testNamedParameterJdbcTemplate2(){
        String sql = "INSERT INTO employees(last_name,dept_id) "
                + "VALUES(:lastName,:dpetId)";
        
        Employee employee = new Employee();
        employee.setLastName("XYZ");
        employee.setEmail("xyz@sina.com");
        employee.setDpetId(3);
        
        SqlParameterSource paramSource =  BeanPropertySqlParameterSource(employee);
        namedParameterJdbcTemplate.update(sql,paramSource);
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读