zoukankan      html  css  js  c++  java
  • Spring JdbcTemplate 和 NamedParameterJdbcTemplate 使用

    1.简单介绍

    DAO层 的一般使用常见的是MyBatis 和 Hibernate,但是Hibernate是重量级的,而且学习成本较高,Mybatis 需要编写大量配置文件及接口文件,对于简单的项目应用和特殊情况,我们就可以选用 Spring 为我们提供的 JdbcTemplate ,或者考虑JPA。

    JdbcTemplate 和 NamedParameterJdbcTemplate 的区别在于后者具有命名参数,使用更加灵活。JdbcTemplate 在使用是sql语句中的变量用?替代,然后参数按照顺序一一对应,而NamedParameterJdbcTemplate 使用:加变量名,然后参数名和变量名去对应,这就叫命名参数(有名字的参数,不再是个?)

    2.使用

    首先必须引入spring-jdbc jar包

     <dependency>  
               <groupId>org.springframework</groupId>  
               <artifactId>spring-jdbc</artifactId>  
               <version>${spring.version}</version>  
     </dependency>

    其次在spring 的配置文件中将JdbcTemplate 或者 NamedParameterJdbcTemplate 注入

    <!--jdbcTemplate  -->
        <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
            <property name="dataSource" ref="dataSource"></property>
        </bean>
        
        <!--NamedParameterJdbcTemplate-->
        <bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
            <constructor-arg ref="dataSource"></constructor-arg>
        </bean>

    然后就可以在DAO层使用了

    package com.lzl.dao;
    
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.jdbc.core.JdbcTemplate;
    import org.springframework.jdbc.core.RowCallbackHandler;
    import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
    import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
    import org.springframework.stereotype.Repository;
    
    import com.lzl.entity.UserInfo;
    @Repository
    public class UserDao {
        @Autowired
        private JdbcTemplate jdbcTemplate;
        
        @Autowired
        private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
        
        //使用JdbcTemplate
        public List<UserInfo> getAllUser(){
            String sql = "select * from user_info";
            final List<UserInfo> list = new ArrayList<UserInfo>();
            
             jdbcTemplate.query(sql, new RowCallbackHandler(){
    
                @Override
                public void processRow(ResultSet rs) throws SQLException {
                    UserInfo user = new UserInfo();
                    user.setID(rs.getInt("id"));
                    user.setUserName(rs.getString("user_name"));
                    user.setAge(rs.getInt("age"));
                    user.setSex(rs.getString("sex"));
                    list.add(user);
                }
                 
             });
            return list;
        }
        
        //使用JdbcTemplate
        public Integer InsertUser(UserInfo user){
            String sql = "INSERT INTO user_info (id, user_name, age, sex) VALUES"+
                         "(null, ?, ?, ?)  ";
            Object [] param = new Object[]{user.getUserName(),user.getAge(),user.getSex()};
            return jdbcTemplate.update(sql,param);
        }
        
        //使用NamedParameterJdbcTemplate
        public Integer InserUserByNamed(UserInfo user){
            String sql = "INSERT INTO user_info (id, user_name, age, sex) VALUES"+
                    "(null, :name, :age, :sex)  ";
            MapSqlParameterSource para = new MapSqlParameterSource();
            para.addValue("name", user.getUserName());
            para.addValue("age", user.getAge());
            para.addValue("sex", user.getAge());
            return  namedParameterJdbcTemplate.update(sql, para);
        }
    }
  • 相关阅读:
    mysql 添加自增长ID(序列方式)
    获取本地IP地址信息
    Intellij 快捷键
    java转换汉字为首字母搜索,
    gitee在linux下自动备份
    七牛云续费dns的ssl证书
    shiro 的realm的授权
    realme的shiro简单实现方法
    shiro初探,最简单的认证,通过ini文件。
    git config file
  • 原文地址:https://www.cnblogs.com/li-zhi-long/p/9401436.html
Copyright © 2011-2022 走看看