打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Spring中SimpleJdbcTemplate的用法实例(三)

一、简介

SimpleJdbcTemplate内部包含了一个NamedParameterJdbcTemplate,所以NamedParameterJdbcTemplate
能做的事情SimpleJdbcTemplate都能干,SimpleJdbcTemplate相对于NamedParameterJdbcTemplate主要
增加了JDK5.0的泛型技术可变长度参数支持。

 

增加知识:(NameParameterJdbcTemplate内部包含了一个JdbcTemplate,所以JdbcTemplate能做的事情它都能做.NameParameterJdbcTemplate相对于JdbcTemplate主要增加了参数可以命名的功能)


simpleJdbcTemplate中有些方法不全,比如拿到主键的方法就没有,可以获取到NamedParameterJdbcTemplate
调用它里面的方法 getNamedParameterJdbcOperations()返回的是NamedParameterJdbcOperations其实现就是NamedParameterJdbcTemplate这个类
getJdbcOperations()返回的是JdbcOperation其实现就是JdbcTemplate
 
SqlParameterSource的两个主要实现MapSqlParameterSourceBeanPropertyParameterSource类,它的作用是将实例中的属性对应到sql中的命名参数上去;而ParameterizedBeanPropertyRowMapper做查询出来的结果映射到java类实例上去;

 

二、配置

 和JdbcTemplate一样,SimpleJdbcTemplate也有3中配置方式:

  第一种方式:我们可以在自己定义的DAO 实现类中注入一个DataSource 引用来完 成SimpleJdbcTemplate的实例化。也就是它是从外部“注入” DataSource 到DAO 中,然后 自己实例化SimpleJdbcTemplate,然后将DataSource 设置到SimpleJdbcTemplate对象中。
第二种方式: 在 Spring 的 IoC 容器中配置一个 SimpleJdbcTemplate的 bean,将 DataSource 注入进来,然后再把SimpleJdbcTemplate注入到自定义DAO 中。
第三种方式: Spring 提供了 org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport类 , 这 个 类 中 定 义 了 NamedParameterJdbcTemplate 属性,也定义了DataSource 属性,当设置DataSource 属性的时候,会创 建SimpleJdbcDaoSupport的实例,所以我们自己编写的DAO 只需要继承SimpleJdbcDaoSupport类, 然后注入DataSource 即可。提倡采用第三种方法。虽然下面的用法中采用了前两种方法

 

配置方法有3种:

1、

Java代码  
  1. public class UserServiceImpl implements UserService {  
  2.   
  3.     private SimpleJdbcTemplate simpleJdbcTemplate;  
  4.       
  5.     public SimpleJdbcTemplate getSimpleJdbcTemplate () {  
  6.         return simpleJdbcTemplate;  
  7.     }  
  8.   
  9.                 //注入方法1     
  10.     public void setSimpleJdbcTemplate (SimpleJdbcTemplate simpleJdbcTemplate) {  
  11.         this.simpleJdbcTemplate= simpleJdbcTemplate;  
  12.     }  
  13.   
  14.                //其它方法这里省略……  
  15. }  

spring配置文件为:

Xml代码  
  1. <bean id="simpleJdbcTemplate" class="org.springframework.jdbc.core.simple.SimpleJdbcTemplate">  
  2.         <property name = "dataSource" ref="dataSource">  
  3. </bean>  
  4. <bean id="userService" class="com.hxzy.account.simpleJdbcTemplate.UserServiceImpl">  
  5.      <property name="simpleJdbcTemplate" ref="simpleJdbcTemplate"/>  
  6. </bean>  

 

方法2、

Java代码  
  1. public class UserServiceImpl implements UserService {  
  2.   
  3.         private SimpleJdbcTemplate simpleJdbcTemplate;  
  4.           
  5.         //注入方法2  
  6.         public void setDataSource(DataSource dataSource) {  
  7.                    this.simpleJdbcTemplate= new JdbcTemplate(dataSource);  
  8.         }  
  9.        
  10.        //其它方法省略……  
  11. }  

 

spring配置文件为:

Xml代码  
  1. <bean id="userService" class="com.hxzy.account.jdbcTemplate.UserServiceImpl">  
  2.        <property name="dataSource" ref="dataSource"/>  
  3. </bean>  

 

方法3:继承SimpleJdbcDaoSupport,其内部有个namedParamterJdbcTemplate ,需要注入DataSource 属性来实例化。

Java代码  
  1. public class UserDaoImpl extends SimpleJdbcDaoSupport implements UserDao {  
  2.   
  3.     @Override  
  4.     public void save(User user) {  
  5.         String sql = null;  
  6.         this.getSimpleJdbcDaoSupport().update(sql);  
  7.     }  
  8.         //其它方法省略……  
  9. }  

 

spring配置文件:

 

Xml代码  
  1. <bean id="userDao" class="com.hxzy.account.jdbcTemplate.UserDaoImpl">  
  2.            <property name="dataSource" ref="dataSource"/>  
  3. </bean>  

 

 

三、使用

 

Java代码  
  1. @Override  
  2.     public void save(User user) {  
  3.         String sql = "insert into tb_test1(id,username,password,sex) "  
  4.                 + "values (:id,:username,:password,:sex)";  
  5.         this.simpleJdbcTemplate.getNamedParameterJdbcOperations().update(sql,  
  6.                 new BeanPropertySqlParameterSource(user));  
  7.     }  
  8.       
  9.     @Override  
  10.     public void update(User user) {  
  11.         String sql = "update tb_test1 set username=:username,password=:password,sex=:sex where id=:id";  
  12.         this.simpleJdbcTemplate.update(sql,  
  13.                 new BeanPropertySqlParameterSource(user));  
  14.     }  
  15.       
  16.     public void deleteById(String id) {  
  17.         String sql = "delete from tb_test1 where id=?";  
  18.         this.simpleJdbcTemplate.update(sql, id);  
  19.     }  
  20.       
  21.     public Object queryById(String id) {  
  22.         String sql = "select * from tb_test1 where id=?";  
  23.         return simpleJdbcTemplate.queryForObject(sql,  
  24.                 ParameterizedBeanPropertyRowMapper.newInstance(User.class), id);  
  25.     }  
  26.       
  27.     public List<?> queryAll() {  
  28.         String sql = "select * from tb_test1" ;  
  29.         return this.simpleJdbcTemplate.query(sql,  
  30.                 ParameterizedBeanPropertyRowMapper.newInstance(clazz));  
  31.     }  
  32.   
  33. private List<User> queryEntityByExample(User user) {  
  34.                String sql = "select * from tb_test1 where (username=:username or :username IS NULL) and (password=:password or :password IS NULL)";  
  35.                return this.simpleJdbcTemplate.query(sql, ParameterizedBeanPropertyRowMapper.newInstance(User.class), new BeanPropertySqlParameterSource(user));  
  36.  }  

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Spring DAO支持
Spring的JdbcTemplate、NamedParameterJdbcTemplate、SimpleJdbcTemplate
使用JDBC进行数据访问【spring framwork】
Spring 注解学习手札(四) 持久层浅析
Spring中jdbcTemplate的用法实例(一)
Spring jdbctemplate和事务管理器 全注解配置 不使用xml
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服