Ibatis,Spring注解方式注入sqlMapClien

简介:

pom.xml

1
2
3
4
5
< dependency >
     < groupId >org.apache.ibatis</ groupId >
     < artifactId >ibatis-sqlmap</ artifactId >
     < version >2.3.4.726</ version >
</ dependency >

Spring-config.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
<!-- sqlMapCLient -->
< bean  id = "sqlMapClient"  class = "org.springframework.orm.ibatis.SqlMapClientFactoryBean" >
     < property  name = "configLocation"  value = "classpath:sqlmap-config.xml" />
     < property  name = "dataSource"  ref = "dataSource"  />
</ bean >
<!-- Spring bean configuration. Tell Spring to bounce off BoneCP -->
< bean  id = "dataSource"  class = "org.springframework.jdbc.datasource.DriverManagerDataSource" >
    <!-- BoneCP type -->
     < property  name = "driverClassName"  value = "${jdbc.driverClass}"  />
     < property  name = "url"  value = "${jdbc.jdbcUrl}"  />
     < property  name = "username"  value = "${jdbc.username}"  />
     < property  name = "password"  value = "${jdbc.password}"  />
</ bean >

BaseDao.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package  com.tq365.samples.ibatis.dao;
import  javax.annotation.PostConstruct;
import  javax.annotation.Resource;
import  org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import  com.ibatis.sqlmap.client.SqlMapClient;
/**
  * BaseDao,Dao需继承此Dao
  * @author archie2010
  * since 2011-3-3 下午02:52:36
  */
public  class  BaseDao  extends  SqlMapClientDaoSupport{
     @Resource (name =  "sqlMapClient" )
     private  SqlMapClient sqlMapClient;
     @PostConstruct
         public  void  initSqlMapClient(){
          super .setSqlMapClient(sqlMapClient);
     }
}

@PostConstruct注解
   在方法上加上注解@PostConstruct,这个方法就会在Bean初始化之后被Spring容器执行(注:Bean初始化包括,实例化Bean,并装配Bean的属性(依赖注入))。它的一个典型的应用场景是,当你需要往Bean里注入一个其父类中定义的属性,而你又无法复写父类的属性或属性的setter方法时

UserDAOimpl.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
import  org.springframework.stereotype.Component;
import  com.tq365.samples.ibatis.model.User;
import  com.tq365.sqmples.util.Pages;
/**
  * UserDAO接口实现类
  * @author archie2010
  * since 2011-3-3 下午02:54:57
  */
@Component ( "userDAO" )
public  class  UserDAOimpl  extends  BaseDao  implements  UserDAO{
     public  User findUserById( int  id){
         return  (User) getSqlMapClientTemplate().queryForObject( "findUserById" , id);
     }
     /**
      * 添加User
      */
     public  void  addUser(User user) {
         getSqlMapClientTemplate().insert( "addUser" , user);
     }
     /**
      * 删除User
      */
     public  void  deleteUserById( int  id) {
         getSqlMapClientTemplate().delete( "deleteUserById" , id);
     }
     /**
      * 查找User
      */
     public  User findUser(User user) {
         return  (User) getSqlMapClientTemplate().queryForObject( "findUser" , user);
     }
     public  int  getTotalCountByUsername(String username){
         return  (Integer) getSqlMapClientTemplate().queryForObject( "getTotalCountByUsername" , username);
     }
     /**
      * User分页
      */
     @SuppressWarnings ( "unchecked" )
     public  Pages<User> findUsersByUsername(String username, int  pageNo) {
         Pages<User> pages= new  Pages<User>(getTotalCountByUsername(username));
         pages.setPageSize( 5 );
                                                                               
         List<User> userList= new  ArrayList<User>();
                                                                               
         Map<String, Object> map= new  HashMap<String, Object>();
         map.put( "username" , username);
         map.put( "start" , pages.getStart(pageNo));
                                                                               
         userList=(List<User>) getSqlMapClientTemplate().queryForObject( "findUsersByUsername" , map);
         pages.setPageList(userList);
                                                                               
         return  pages;
     }
     /**
      * 查询所有记录
      * @return
      */
     public  int  getTotalCount(){
         return  (Integer) getSqlMapClientTemplate().queryForObject( "getTotalCount" );
     }
     @SuppressWarnings ( "unchecked" )
     public  Pages<User> findAllPageUser( int  pageNo){
         Pages<User> pages= new  Pages<User>(getTotalCount());
         pages.setPageSize( 5 );
                                                                               
         List<User> userList= new  ArrayList<User>();
                                                                               
         userList=(List<User>) getSqlMapClientTemplate().queryForList( "findAllPageUser" , pages.getStart(pageNo));
         pages.setPageList(userList);
                                                                               
         return  pages;
     }
                                                                           
}









本文转自 LinkedKeeper 51CTO博客,原文链接:http://blog.51cto.com/sauron/1271834,如需转载请自行联系原作者
目录
相关文章
|
20天前
|
Java 开发者 Spring
【SpringBoot 异步魔法】@Async 注解:揭秘 SpringBoot 中异步方法的终极奥秘!
【8月更文挑战第25天】异步编程对于提升软件应用的性能至关重要,尤其是在高并发环境下。Spring Boot 通过 `@Async` 注解简化了异步方法的实现。本文详细介绍了 `@Async` 的基本用法及配置步骤,并提供了示例代码展示如何在 Spring Boot 项目中创建与管理异步任务,包括自定义线程池、使用 `CompletableFuture` 处理结果及异常情况,帮助开发者更好地理解和运用这一关键特性。
93 1
|
29天前
|
XML Java 测试技术
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
这篇文章介绍了Spring5框架的三个新特性:支持@Nullable注解以明确方法返回、参数和属性值可以为空;引入函数式风格的GenericApplicationContext进行对象注册和管理;以及如何整合JUnit5进行单元测试,同时讨论了JUnit4与JUnit5的整合方法,并提出了关于配置文件加载的疑问。
Spring5入门到实战------17、Spring5新功能 --Nullable注解和函数式注册对象。整合JUnit5单元测试框架
|
16天前
|
缓存 Java 数据库连接
Spring Boot奇迹时刻:@PostConstruct注解如何成为应用初始化的关键先生?
【8月更文挑战第29天】作为一名Java开发工程师,我一直对Spring Boot的便捷性和灵活性着迷。本文将深入探讨@PostConstruct注解在Spring Boot中的应用场景,展示其在资源加载、数据初始化及第三方库初始化等方面的作用。
42 0
|
1天前
|
Java 数据库连接 数据格式
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
IOC/DI配置管理DruidDataSource和properties、核心容器的创建、获取bean的方式、spring注解开发、注解开发管理第三方bean、Spring整合Mybatis和Junit
【Java笔记+踩坑】Spring基础2——IOC,DI注解开发、整合Mybatis,Junit
|
29天前
|
XML Java 数据格式
Spring5入门到实战------4、IOC容器-Bean管理XML方式、集合的注入(二)
这篇文章是Spring5框架的实战教程,主题是IOC容器中Bean的集合属性注入,通过XML配置方式。文章详细讲解了如何在Spring中注入数组、List、Map和Set类型的集合属性,并提供了相应的XML配置示例和Java类定义。此外,还介绍了如何在集合中注入对象类型值,以及如何使用Spring的util命名空间来实现集合的复用。最后,通过测试代码和结果展示了注入效果。
Spring5入门到实战------4、IOC容器-Bean管理XML方式、集合的注入(二)
|
29天前
|
Java 数据安全/隐私保护 Spring
揭秘Spring Boot自定义注解的魔法:三个实用场景让你的代码更加优雅高效
揭秘Spring Boot自定义注解的魔法:三个实用场景让你的代码更加优雅高效
|
29天前
|
XML Java 数据库
Spring5入门到实战------15、事务操作---概念--场景---声明式事务管理---事务参数--注解方式---xml方式
这篇文章是Spring5框架的实战教程,详细介绍了事务的概念、ACID特性、事务操作的场景,并通过实际的银行转账示例,演示了Spring框架中声明式事务管理的实现,包括使用注解和XML配置两种方式,以及如何配置事务参数来控制事务的行为。
Spring5入门到实战------15、事务操作---概念--场景---声明式事务管理---事务参数--注解方式---xml方式
|
29天前
|
XML 数据库 数据格式
Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】
这篇文章是Spring5框架的实战教程的终结篇,介绍了如何使用注解而非XML配置文件来实现JdbcTemplate的数据库操作,包括增删改查和批量操作,通过创建配置类来注入数据库连接池和JdbcTemplate对象,并展示了完全注解开发形式的项目结构和代码实现。
Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】
|
29天前
|
XML Java 数据格式
Spring5入门到实战------8、IOC容器-Bean管理注解方式
这篇文章详细介绍了Spring5框架中使用注解进行Bean管理的方法,包括创建Bean的注解、自动装配和属性注入的注解,以及如何用配置类替代XML配置文件实现完全注解开发。
Spring5入门到实战------8、IOC容器-Bean管理注解方式
|
30天前
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
30 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧