美文网首页
使用 NamedParameterJdbcTemplate

使用 NamedParameterJdbcTemplate

作者: 桑鱼nicoo | 来源:发表于2020-02-07 17:30 被阅读0次

    在经典的 JDBC 用法中,SQL 参数是用占位符?表示,并且收到位置的限制,定位参数的问题在于,一旦参数的顺序发生变化,就必须改变参数绑定。

    在 SpringJDBC 框架中,绑定 SQL 参数的另一种选择是使用具名参数(named parameter),SQL 按名称(以冒号开头)进行指定

        <!--导入资源文件-->
        <context:property-placeholder location="classpath:db.properties"/>
    
        <!--配置c3p0数据源-->
        <bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
            <property name="User" value="${jdbc.user}"/>
            <property name="Password" value="${jdbc.password}"/>
            <property name="DriverClass" value="${jdbc.driverClass}"/>
            <property name="jdbcUrl" value="${jdbc.jdbcUrl}"/>
    
            <property name="InitialPoolSize" value="${jdbc.initPoolSize}"/>
            <property name="MaxPoolSize" value="${jdbc.maxPoolSize}"/>
        </bean>
    
        <!--配置NamedParameterJdbcTemplate,该对象可以使用具名参数,其没有无参数的构造器,所以必须为其构造器指定参数-->
        <bean id = "namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
            <constructor-arg ref="datasource"></constructor-arg>
        </bean>
    
    public class JDBCTest {
    
        private ApplicationContext ctx;
        private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
        {
            ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
            namedParameterJdbcTemplate = (NamedParameterJdbcTemplate)ctx.getBean("namedParameterJdbcTemplate");
        }
    
        /**
         * 可以为参数命名
         * 使用具名参数时,SQL语句中的参数名和类的属性一致
         */
        @Test
        public void testNamedParameterJdbcTemplate(){
            String sql = "INSERT INTO employees(last_name,email) VALUES(:ln,:email)";
            Map<String,Object> paramMap = new HashMap<>();
            paramMap.put("ln","cc");
            paramMap.put("email","cc@cc.com");
            namedParameterJdbcTemplate.update(sql,paramMap);
        }
    
    

    相关文章

      网友评论

          本文标题:使用 NamedParameterJdbcTemplate

          本文链接:https://www.haomeiwen.com/subject/kvvethtx.html