`

spring3 jdbctemplate 注解实例

阅读更多
标签: javawebTimestampspring第一步,先引入需要的包,这里不作详细说明

 

第二步,配置注解扫描,txManager是事务管理提供datasource就可以了

 

[java] view plain copy
 
  1. <aop:aspectj-autoproxy />  
  2.   
  3.     <!-- transaction manager, use JtaTransactionManager for global tx -->  
  4.     <bean id="txManager"  
  5.         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  6.         <property name="dataSource" ref="dynamicDataSource" />  
  7.     </bean>  
  8.   
  9.     <!--  
  10.         enable component scanning (beware that this does not enable mapper  
  11.         scanning!)  
  12.     -->  
  13.     <context:component-scan base-package="com.shadow" />  
  14.   
  15.     <!-- enable autowire -->  
  16.     <context:annotation-config />  
  17.   
  18.     <!-- enable transaction demarcation with annotations -->  
  19.     <tx:annotation-driven transaction-manager="txManager" />  

第三步,配置jdbctemplate的实例,同样提供一个datasource就可以了

 

 

[java] view plain copy
 
  1. <!-- JDBC模板 -->  
  2.     <bean id="jdbcTemplate"  
  3.         class="org.springframework.jdbc.core.JdbcTemplate">  
  4.         <property name="dataSource" ref="dynamicDataSource" />  
  5.     </bean>  

第四步,写个BaseDao方便下面的dao层调用,由于时间转换经常用到,这里只写了个通用的时间转换

 

 

[java] view plain copy
 
  1. /** 
  2.  *  
  3.  * @author shadow 
  4.  * @email 124010356@qq.com 
  5.  * @create 2012.04.28 
  6.  *  
  7.  * @param <T> 
  8.  */  
  9. public abstract class AbstractBaseDao<T> implements DateFormatEntry {  
  10.   
  11.     // SPRING JDBC模板接口  
  12.     private JdbcTemplate jdbcTemplate;  
  13.   
  14.     public JdbcTemplate getJdbcTemplate() {  
  15.         return jdbcTemplate;  
  16.     }  
  17.   
  18.     @Resource  
  19.     public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {  
  20.         this.jdbcTemplate = jdbcTemplate;  
  21.     }  
  22.   
  23.     /** 
  24.      * 获取日期 
  25.      *  
  26.      * @param timestamp 
  27.      * @return Date 
  28.      */  
  29.     public Date getDate(Timestamp timestamp) {  
  30.         return toDate(timestamp, null);  
  31.     }  
  32.   
  33.     /** 
  34.      * 获取日期 
  35.      *  
  36.      * @param timestamp 
  37.      * @param format 
  38.      * @return Date 
  39.      */  
  40.     public Date getDate(Timestamp timestamp, String format) {  
  41.         return toDate(timestamp, format);  
  42.     }  
  43.   
  44.     /** 
  45.      * Timestamp按格式转换成Date 
  46.      *  
  47.      * @param timestamp 
  48.      * @param format 
  49.      * @return Date 
  50.      */  
  51.     public Date toDate(Timestamp timestamp, String format) {  
  52.         Date date = null;  
  53.         if (null == format || "".equals(format))  
  54.             format = DEFAULT_FORMAT;  
  55.         SimpleDateFormat sdf = new SimpleDateFormat(format);  
  56.         try {  
  57.             date = sdf.parse(sdf.format(timestamp));  
  58.         } catch (ParseException e) {  
  59.             e.printStackTrace();  
  60.         }  
  61.         return date;  
  62.     }  
  63.   
  64. }  

第五步,写个UserDao接口跟实现类

 

 

[java] view plain copy
 
  1. public interface UserDao {  
  2.   
  3.     public List<User> queryByUserName(String username);  
  4.   
  5.     public int checkUser(String username);  
  6.       
  7.     public List<User> queryForAll();  
  8.       
  9. }  

 

这里使用@Component("userDao"),相当于在xml配置里做一个<bean id="userDao" class="xxxxxx.UserDaoImpl"/>,然后我们在service调用就直接Resource("userDao")就能自动匹配这个实现类了

[java] view plain copy
 
  1. @Component("userDao")  
  2. public class UserDaoImpl extends AbstractBaseDao<User> implements UserDao {  
  3.   
  4.     public int checkUser(String username) {  
  5.         // TODO Auto-generated method stub  
  6.         return 0;  
  7.     }  
  8.   
  9.     @SuppressWarnings("unchecked")  
  10.     public List<User> queryByUserName(String username) {  
  11.         String sql = "select t1.* from t_user t1 where t1.username = ?";  
  12.         List<User> list = this.getJdbcTemplate().query(sql,  
  13.                 new Object[] { username }, new UserMapper());  
  14.         return list;  
  15.     }  
  16.   
  17.     public List<User> queryForAll() {  
  18.         SqlRowSet rowSet = getJdbcTemplate().queryForRowSet(null);  
  19.         while (rowSet.next()) {  
  20.         }  
  21.         return null;  
  22.     }  
  23.   
  24.     @SuppressWarnings("unchecked")  
  25.     private class UserMapper implements RowMapper {  
  26.         public Object mapRow(ResultSet rs, int i) throws SQLException {  
  27.             User vo = new User();  
  28.             vo.setId(rs.getInt("id"));  
  29.             vo.setUsername(rs.getString("username"));  
  30.             vo.setPassword(rs.getString("password"));  
  31.             vo.setName(rs.getString("name"));  
  32.             return vo;  
  33.         }  
  34.     }  
  35.   
  36. }  

第六步,写service层调用dao的方法

 

 

[java] view plain copy
 
  1. public interface UserService {  
  2.   
  3.     /** 
  4.      * 更新登录信息 
  5.      *  
  6.      * @param user 
  7.      */  
  8.     public void LoginForUpdate(User user);  
  9.   
  10.     /** 
  11.      * 安全退出功能 
  12.      *  
  13.      * @return String 
  14.      */  
  15.     public String logout();  
  16.   
  17.     /** 
  18.      * 检测用户是否存在 
  19.      *  
  20.      * @param username 
  21.      * @return Boolean 
  22.      */  
  23.     public boolean checkUser(String username);  
  24.   
  25.     /** 
  26.      * 通过用户名获取账号 
  27.      *  
  28.      * @param username 
  29.      * @return List<User> 
  30.      */  
  31.     public List<User> findByUserName(String username);  

 

这里使用了的@Resource没有带参数就是默认使用接口类名首字母小写(例如接口是UserDao,默认匹配是userDao),@Transactional是事务的注解,可加各种参数设置,

具体请看帮助文档

[java] view plain copy
 
  1. @Transactional  
  2. @Component("userService")  
  3. public class UserServiceImpl implements UserService {  
  4.   
  5.     @Resource  
  6.     private UserDao userDao;  
  7.   
  8.     public void LoginForUpdate(User user) {  
  9.         // TODO Auto-generated method stub  
  10.     }  
  11.   
  12.     public boolean checkUser(String username) {  
  13.         // TODO Auto-generated method stub  
  14.         return false;  
  15.     }  
  16.   
  17.     public List<User> findByUserName(String username) {  
  18.         return this.userDao.queryByUserName(username);  
  19.     }  
  20.   
  21.     public String logout() {  
  22.         // TODO Auto-generated method stub  
  23.         return null;  
  24.     }  
  25.   
  26. }  

第七步,写junit测试

 

 

[java] view plain copy
 
  1. @RunWith(SpringJUnit4ClassRunner.class)  
  2. @ContextConfiguration("classpath:application.xml")  
  3. public class Junit {  
  4.   
  5.     @Resource  
  6.     private UserService userService;  
  7.   
  8.     @Test  
  9.     public void test() {  
  10.         for (int i = 0; i < 10; i++) {  
  11.             List<User> users = userService.findByUserName("3213231");  
  12.             System.out.println("当前用户数:" + users.size());  
  13.         }  
  14.     }  
  15.   
  16. }  

最后右键run as junit就ok了

 

 

附言,其实spring jdbctemplate是很灵活的,性能也很不错,你能使用queryForXX一类的方法返回map,也能返回原始ResultSet,当然也能使用回调接口映射成对象,我的例子里就是演示了如何把结果集映射成实体对象

 

分享到:
评论

相关推荐

    Spring3+Dwr+JdbcTemplate(拦截器方式实现防止重复提交)

    1.针对SpringMVC注解的配置...2.Spring+JdbcTemplate事物管理 3.Spring+Hibernate事物管理 4.Spring实现DWR注解方式的应用配置 5.Spring配置拦截器 6.Spring通过拦截器实现防止重复提交实例 对学习,会起到非常好的效果

    spring4示例代码

    spring-3 演示使用动态代理模式实现面向切面编程 使用注解方式进行AOP编程及使用配置xml方式进行AOP编程 spring-4 演示了spring与JDBCTemplate配合使用 spring-5 演示了声明式事务及使用xml配置文件处理事务

    springmvc注解实例

    基于spring3.2.9的版本,采用纯注解的方式以及spring自带的jdbcTemplate操作数据库和事务管理。

    Spring.3.x企业应用开发实战(完整版).part2

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    Spring中文帮助文档

    2.2.4. Annotation(注解)驱动配置 2.2.5. 在classpath中自动搜索组件 2.3. 面向切面编程(AOP) 2.3.1. 更加简单的AOP XML配置 2.3.2. 对@AspectJ 切面的支持 2.3.3. 对bean命名pointcut( bean name pointcut ...

    Spring框架-简单通讯录项目

    1.利用spring对实例管理 2.利用spring框架对对象...3.利用注解完成对象的创建和属性的自动注入 4.掌握AOP操作,实现增刑改查中任意一项操作增强 5.使用C3P0,jdbcTemplate模板操作数据库 6.只有一个通讯录表和日志表

    Spring3.x企业应用开发实战(完整版) part1

    Spring3.0是Spring在积蓄了3年之久后,隆重推出的一个重大升级版本,进一步加强了Spring作为Java领域第一开源平台的翘楚地位。  Spring3.0引入了众多Java开发者翘首以盼的新功能和新特性,如OXM、校验及格式化框架...

    spring.doc

    3 Spring基本功能详解 8 3.1 SpringIOC 8 3.2别名Alias 11 别名拓展: 11 3.3 Spring容器内部对象的创建 12 Spring容器内部对象创建拓展: 12 3.3.1使用类构造器实例化(默认无参数) 14 3.3.2使用静态工厂方法实例化...

    Spring API

    2. Spring 2.0和 2.5的新特性 2.1. 简介 2.2. 控制反转(IoC)容器 2.2.1. 新的bean作用域 2.2.2. 更简单的XML配置 2.2.3. 可扩展的XML编写 2.2.4. Annotation(注解)驱动配置 2.2.5. 在classpath中自动搜索组件...

    Spring-Reference_zh_CN(Spring中文参考手册)

    11.2.1. JdbcTemplate类 11.2.2. NamedParameterJdbcTemplate类 11.2.3. SimpleJdbcTemplate类 11.2.4. DataSource接口 11.2.5. SQLExceptionTranslator接口 11.2.6. 执行SQL语句 11.2.7. 执行查询 11.2.8. 更新...

    Spring 2.0 开发参考手册

    11.2.1. JdbcTemplate类 11.2.2. NamedParameterJdbcTemplate类 11.2.3. SimpleJdbcTemplate类 11.2.4. DataSource接口 11.2.5. SQLExceptionTranslator接口 11.2.6. 执行SQL语句 11.2.7. 执行查询 11.2.8. ...

    spring chm文档

    11.2.1. JdbcTemplate类 11.2.2. NamedParameterJdbcTemplate类 11.2.3. SimpleJdbcTemplate类 11.2.4. DataSource接口 11.2.5. SQLExceptionTranslator接口 11.2.6. 执行SQL语句 11.2.7. 执行查询 11.2.8. ...

    SpringBoot开发实战(实战案例)

    案例04 基于注解的依赖注入 案例05 Bean的实例化 案例06 Bean的作用域 案例07 OOP方式实现日志记录 案例08 AOP方式实现日志记录 案例09 基于JdbcTemplate的学生信息维护 案例10 Maven入门案例 案例11 基于Maven构建...

    基于SpringJDBC的轻量级ORM框架sborm.zip

    9、对于复杂的sql查询,提供获取jdbctemplate实例进行操作,类似spring jdbc的常规用法; 10、提供Entity代码生成接口,Entity并非简单的pojo(尽可能不要去修改此类),引入字段常量类,方便查询的时候指定选择...

    spring学习笔记

    Bean:....................................................................................................................................12 1.4.1Spring 框架Bean 实例化的方式:.............................

    spring3.2入门到大神(备java基础、jsp、servlet,javaee精髓)

    IoC思想、DI依赖注入、Bean的实例方式、Bean种类、Bean作用域范围、Bean生命周期管理、依赖注入、注解装配Bean、整合Junit测试、WEB开发集成spring、AOP思想、AOP原理解剖、spring 传统aop开发、JdbcTemplate模板...

Global site tag (gtag.js) - Google Analytics