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);
}
}

Spring JdbcTemplate 和 NamedParameterJdbcTemplate 使用的更多相关文章

  1. Spring(二十一):Spring JdbcTemplate、NamedParameterJdbcTemplate具名参数

    JdbcTemplate主要提供以下五类方法: execute方法:可以用于执行任何SQL语句,一般用于执行DDL语句: update方法及batchUpdate方法:update方法用于执行新增.修 ...

  2. Spring JdbcTemplate使用别名传参(NamedParameterJdbcTemplate)

    原文地址http://www.voidcn.com/article/p-cwqegtpg-hx.html 在使用JdbcTemplate时,一般传参都是用的?来绑定参数,但是对于某种情况就不适用了,例 ...

  3. Spring JdbcTemplate用法整理

    Spring JdbcTemplate用法整理: xml: <?xml version="1.0" encoding="UTF-8"?> <b ...

  4. spring JdbcTemplate 在itest 开源测试管理项目中的浅层(5个使用场景)封装

    导读: 主要从4个方面来阐述,1:背景:2:思路:3:代码实现:4:使用 一:封装背景, 在做项目的时候,用的JPA ,有些复杂查询,比如报表用原生的JdbcTemplate ,很不方便;传参也不方便 ...

  5. Spring jdbcTemplate RowMapper绑定任意对象

    RowMapper可以将数据中的每一行封装成用户定义的类,在数据库查询中,如果返回的类型是用户自定义的类型则需要包装,如果是Java自定义的类型,如:String则不需要,Spring最新的类Simp ...

  6. Spring JdbcTemplate框架搭建及其增删改查使用指南

    Spring JdbcTemplate框架搭建及其增删改查使用指南 前言: 本文指在介绍spring框架中的JdbcTemplate类的使用方法,涉及基本的Spring反转控制的使用方法和JDBC的基 ...

  7. Spring JdbcTemplate 与 事务管理 学习

    Spring的JDBC框架能够承担资源管理和异常处理的工作,从而简化我们的JDBC代码, 让我们只需编写从数据库读写数据所必需的代码.Spring把数据访问的样板代码隐藏到模板类之下, 结合Sprin ...

  8. (转)Spring JdbcTemplate 方法详解

    Spring JdbcTemplate方法详解 文章来源:http://blog.csdn.net/dyllove98/article/details/7772463 JdbcTemplate主要提供 ...

  9. [转]Spring JdbcTemplate 查询分页

    原文:http://blog.csdn.net/xiaofanku/article/details/4280128 现在进行的项目由于数据库的遗留原因(设计的不堪入目)不能用hibernate.所以用 ...

随机推荐

  1. 【leetcode】Department Top Three Salaries

    The Employee table holds all employees. Every employee has an Id, and there is also a column for the ...

  2. layer 1.8.5 引用样式失效

    在layer.min.js里,默认引用的官网的样式,目前,网址失效.所以使用本地的样式即可. 将e后面的网址去除,即使用本地的样式.

  3. Socket 对象(内建)方法

    函数 描述 服务器端套接字 s.bind() 绑定地址(host,port)到套接字, 在AF_INET下,以元组(host,port)的形式表示地址. s.listen() 开始TCP监听.back ...

  4. Ant下载与配置

    ant官网链接: https://ant.apache.org/ 我这里下载的版本是1.10.7 解压下载后的.zip文件到指定的目录 配置环境变量 ANT_HOME:ant的存放目录 PATH:an ...

  5. C语言 - strcmp和strncmp的编程实现及总结

    一.strcmp和strncmp的编程实现及总结 1.strcmp函数的实现 要求: 原型: int strcmp(char *dest,char * src,int n);        头文件:# ...

  6. CF1155 E.Guess the Root

    题目链接:Click here 题目大意:现在有一个至多11项的多项式\(F(x)\),你可以询问至多50个\(x\),黑盒子会告诉你\(F(x)\)的值,你现在要找到一个\(x\)使得\(F(x)= ...

  7. Mysql启动报错 The server quit without updating PID

    [root@db mysql]# service mysql restartMySQL server PID file could not be found![失败]Starting MySQL... ...

  8. 互联网_http协议

    一.定义 http协议叫做超文本传输协议,是从web服务器传输超文本到本地浏览器的协议. 二.特征 1.无连接:即每次连接仅处理一个请求,服务器处理完客户的请求,并收到客户端的响应后,即断开连接.采用 ...

  9. Java并发编程的艺术笔记(七)——CountDownLatch、CyclicBarrier详解

    一.等待多线程完成的CountDownLatch CountDownLatch允许一个或多个线程等待其他线程完成操作,像加强版的join.(t.join()是等待t线程完成) 例: (1)开启多个线程 ...

  10. input(移动端iOS)输入内容时调用软件盘后页面底部留白问题

    iOS/input输入框调用软键盘底部留白 只需input输入框失去焦点时,让页面自动下移即可恢复 <input placeholder="请输入用户名" v-model=& ...