http://zmx.iteye.com/blog/373736

NamedParameterJdbcTemplate内部包含了一个JdbcTemplate,所以JdbcTemplate能做的事情NamedParameterJdbcTemplate都能干,NamedParameterJdbcTemplate相对于JdbcTemplate主要增加了参数可以命名的功能。

public Object queryForObject(String sql, Map paramMap, RowMapper rowMapper)

public Object queryForObject(String sql, SqlParameterSource paramSource, RowMapper rowMapper)

SqlParameterSource的两个主要实现MapSqlParameterSource

和BeanPropertySqlParameterSource

public int update(String sql, SqlParameterSource paramSource, KeyHolder generatedKeyHolder)保存数据获得主键。

实例说明:

/**

*一、NamedParameterJdbcTemplate提供了命名参数,用:x代替了?

*NamedParameterJdbcTemplate传参数可以用map或者SqlParameterSource

*用map的好处是:x,x的值可以自由取,但是所有参数的值都必须要放到map中去,其中的key为:后面的名称,value是你传的值

*用SqlParameterSource的好处是不用一个个的赋值,但是:x中的x的值必须和对象的属性名称一样

*二、使用KeyHolder keyholder=new GeneratedKeyHolder();

namedjdbctemp.update(sql, ps,keyholder);这个参数可以获得主键生成值

*/

publicclass StuDaoImple implements StuDaointer{

private NamedParameterJdbcTemplate namedjdbctemp;

public StuDaoImple(){

namedjdbctemp=new NamedParameterJdbcTemplate(SQLConnUtil.getDataSource());

}// SQLConnUtil为JDBC工具类,提供了得到数据源的静态方法

/*

* 这里会用到NamedParameterJdbcTemplate两个好处:

* 1,不用一个个的为参数赋值。

* 2,可以轻易的得到主键自动增长值

*/

publicvoid addStu(Stu stu) {

String sql="insert into stu values(:sname,:ssex,:sbrith)";

//:后面的名称必须和stu属性名称一样

SqlParameterSource ps=new BeanPropertySqlParameterSource(stu);

KeyHolder keyholder=new GeneratedKeyHolder();

namedjdbctemp.update(sql, ps,keyholder);

//加上KeyHolder这个参数可以得到添加后主键的值

int m=keyholder.getKey().intValue();

System.out.println(m);

//Map map=keyholder.getKeys();//这样可以得到联合主键的值

//keyholder.getKeyList();//这样可以得到一些主主键值,若一次添加好几条记录

}

publicint count() {

String sql="select count(*) from stu";

//可以通过NamedParameterJdbcTemplate得到JdbcTemplate

int m=namedjdbctemp.getJdbcOperations().queryForInt(sql);

return m;

}

/*

* 这里会用到NamedParameterJdbcTemplate另一个好处:

* 位置参数

*/

publicvoid delStu(int sid) {

String sql="delete stu where s_id=:id";

Map map=new HashMap();

map.put("id", sid);

namedjdbctemp.update(sql, map);

}

public List getAllStu() {

String sql="select s_id as sid,s_name as sname,s_sex as ssex,s_brith as sbrith from stu";

List list=namedjdbctemp.getJdbcOperations().query(sql,new BeanPropertyRowMapper(Stu.class));

return list;

}

public List getAllStu(Stu stu) {

String sql="select s_id as sid,s_name as sname,s_sex as ssex,s_brith as sbrith from stu where s_id=:sid";

SqlParameterSource ps=new BeanPropertySqlParameterSource(stu);

returnnamedjdbctemp.query(sql, ps, new BeanPropertyRowMapper(Stu.class));

}

public Stu getOneStu(Stu stu) {

String sql="select s_id as sid,s_name as sname,s_sex as ssex,s_brith as sbrith from stu where s_id=:sid";

SqlParameterSource ps=new BeanPropertySqlParameterSource(stu);

return (Stu)namedjdbctemp.queryForObject(sql, ps, new BeanPropertyRowMapper(Stu.class));

}

public String getStuName(Stu stu) {

String sql="select s_name as sname from stu where s_name=:sname";

SqlParameterSource ps=new BeanPropertySqlParameterSource(stu);

return (String)namedjdbctemp.queryForObject(sql, ps, String.class);

}

publicvoid updStu(Stu stu) {

String sql="update stu set s_name=:sname,s_sex=:ssex,s_brith=:sbrith where s_id=:sid";

SqlParameterSource ps=new BeanPropertySqlParameterSource(stu);

namedjdbctemp.update(sql, ps);

}

}

  • JDBC_SpringNamedJdbcTemplate.rar (3.2 MB)
  • 描述: 我的使用Spring的NamedParameterJdbcTemplate完成DAO操作实例
  • 下载次数: 207

使用Spring的NamedParameterJdbcTemplate完成DAO操作相关推荐

  1. Spring使用JPA进行Dao层的数据访问以及事务管理

    在上篇文章中,我们完成了SSH+JPA+Mysql的整合: https://blog.csdn.net/a745233700/article/details/81413306 在这篇文章中,我们主要介 ...

  2. mysql spring lobhandler_Spring 让 LOB 数据操作变得简单易行()

    本文讲解了在 Spring 中处理 LOB 数据的原理和方法,对于 Spring JDBC 以及 Spring 所集成的第三方 ORM 框架(包括 JPA.Hibernate 和 iBatis)如何处 ...

  3. Spring整合Mybatis之DAO层、Service层开发

    3. Spring整合Mybatis编程DAO层开发 1. 项目引入相关依赖spring mybatis mysql mybatis-spring druid2. 编写spring.xml整合:spr ...

  4. Spring boot 三层框架dao层、service层、controller层+实体model层

    Spring boot 三层框架dao层.service层.controller层+实体model层 model层 dao层 service层 controller层 首先创建一个springboot ...

  5. Spring Boot + JPA +MySQL 数据操作及示例环境搭建(自动建表)

    JPA 是Java官方提供的数据持久的统一API , 是一个接口标准,并没有具体实现. JPA的实现常见的有: Hibernate TopLink (Eclipse Link) Spring Boot ...

  6. Spring Boot之jdbc数据操作06

    Spring Boot之jdbc数据操作06 JDBC 通过快速创建spring boot项目选择 mysql 和jdbc 创建一个基于web的spring boot项目 依赖为 <depend ...

  7. Spring Data JPA多表操作(5)

    Spring Data JPA多表操作(5) 数据库中多表之间的关系 多对多 一对多 一对一 一对多示例 数据库设计示例 实体示例 客户:指的是一家公司,我们记为A. 联系人:指的是A公司中的员工. ...

  8. Spring Boot实战:数据库操作

    From: https://www.cnblogs.com/paddix/p/8178943.html 上篇文章中已经通过一个简单的HelloWorld程序讲解了Spring boot的基本原理和使用 ...

  9. Spring总结四:JDBC操作

    Spring 对 JDBC 的支持 为了使 JDBC 更加易于使用, Spring 在 JDBC API 上定义了一个抽象层, 以此建立一个 JDBC 存取框架.     JdbcTemplate(J ...

最新文章

  1. yolt 卫星图像进行快速目标识别的新方法
  2. 【R】神经网络相关的R包
  3. Android空间WebView和ViedeoView的使用
  4. 阿里云年会人机大战-技术大揭秘
  5. 初识ABP vNext(9):ABP模块化开发-文件管理
  6. React Navigation 导航栏样式调整+底部角标消息提示
  7. git远程代码回滚_【GIT】git 删除本地分支和远程分支、本地代码回滚和远程代码库回滚...
  8. 警惕“***性社工”现象
  9. python3 解析html_Python3解析html高级操作
  10. 跟老板参加饭局,席间老板叫我去加菜,我该怎么做?
  11. 软件项目开发文档 模板
  12. IDEA搭建SpringMVC+Spring+Mybatis项目
  13. 11计算机专业vb试题答案,11高三计算机专业VB试题(三)
  14. Python 利用 BeautifulSoup 爬取网站获取新闻流
  15. 阿里图片合成接口拼接
  16. 一个流氓眼中的物联网
  17. 如何自建微信外卖平台_如何建立微信点餐平台 微信小程序外卖怎么做
  18. ubuntu16.04通过网络访问windows共享文件夹(samba)
  19. 苹果输入法怎么换行_现在还有没有必要学习五笔输入法呢
  20. 【效率翻倍】vscode使用指南

热门文章

  1. iOS之自定义封装tabBar
  2. 104. Maximum Depth of Binary Tree 二叉树的最大深度
  3. Python到底是个什么东西
  4. 【STM32】STM32F4时钟系统
  5. 【Alljoyn】 Alljoyn学习笔记七 Alljoyn瘦客户端库介绍
  6. 51nod 1557 两个集合 (严谨的逻辑题)
  7. cad lisp 画四边形_多年经验总结CAD技巧6
  8. java简单的死锁检测(转载线下代码)
  9. hibernate报错 net.sf.json.util.CycleDetectionStrategy$StrictionStrategyRepeatedReferenceAsObject
  10. VC INI文件读写 和 GetProfileString,WriteProfileString函数的使用