`
longgangbai
  • 浏览: 7328424 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

IBatis3.0 注解配置方式的应用(JPA+IBatis3.0应用注解版)

阅读更多

         其实使用IBatis3.0注解,相等于把IBatis中的全局xml配置信息编程式开发,非全局xml配置针对实体的映射文件采用。注解开发,好了,言归正传吧。\(^o^)/~

IbatisSessionFactory 的代码重点如下:

注意看有颜色部分代码:

 

package com.vnvtrip.search.ibatis.utils;

import java.sql.Connection;
import java.util.Properties;
import java.util.logging.Logger;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.ExecutorType;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.session.TransactionIsolationLevel;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;

import com.vnvtrip.search.ibatis.blog.model.BlogMapper;

/**
 * 
 * 
 * 创建类似Hibernate的HibernateSessionFactoryUtils的类
 * @author longgangbai
 * 
 */
@SuppressWarnings("serial")
public class IbatisSessionFactory implements SqlSessionFactory {
    
    public static final Logger LOG = Logger.getLogger(IbatisSessionFactory.class.getName());

    /**
     * 针对特殊的应用
     * 读取config.properties文件,存放了数据库连接参数等信息 
     */
    private static final Properties props = new Properties() {
	{
	    try {
		load(IbatisSessionFactory.class.getResourceAsStream("jdbc.properties"));
	    } catch (Exception e) {
		e.printStackTrace();
	    }
	}
    };
    
    /** 根据参数得到某个具体的iBatis数据源工厂实例 */
    public static SqlSessionFactory getInstance() {
	if (sqlSessionFactory == null) {
	    try {
		initSqlSessionFactory();
	    } catch (Exception e) {
		e.printStackTrace();
	    }
	}
	return sqlSessionFactory;
    }
   /**
    * 采用注解配置的方式
    * @throws Exception
    */
    private static void initSqlSessionFactory() throws Exception {
	//获取数据源    
	DataSource datasource = BasicDataSourceFactory.createDataSource(props);
	    //创建事务工厂
	TransactionFactory transFactory = new JdbcTransactionFactory();
	//获取上下文环境
	Environment environment = new Environment("development",
	transFactory, datasource);
	//创建配置对象
	Configuration config = new Configuration(environment);
	//添加映射的类
	config.addMapper(BlogMapper.class);
	//构建的会话工厂
	SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
	sqlSessionFactory = builder.build(config);

    }

    // 真正“做事”的实例
    private static SqlSessionFactory sqlSessionFactory = null;

    public Configuration getConfiguration() {
	return sqlSessionFactory.getConfiguration();
    }

    public SqlSession openSession() {
	return sqlSessionFactory.openSession();
    }

    public SqlSession openSession(boolean arg0) {
	return sqlSessionFactory.openSession(arg0);
    }

    public SqlSession openSession(Connection arg0) {
	return sqlSessionFactory.openSession(arg0);
    }

    public SqlSession openSession(ExecutorType arg0) {
	return sqlSessionFactory.openSession(arg0);
    }

    public SqlSession openSession(ExecutorType arg0, boolean arg1) {
	return sqlSessionFactory.openSession(arg0, arg1);
    }

    public SqlSession openSession(ExecutorType arg0, Connection arg1) {
	return sqlSessionFactory.openSession(arg0, arg1);
    }

    @Override
    public SqlSession openSession(TransactionIsolationLevel arg0) {
	return sqlSessionFactory.openSession(arg0);
    }

    @Override
    public SqlSession openSession(ExecutorType arg0,
	    TransactionIsolationLevel arg1) {
	return sqlSessionFactory.openSession(arg0, arg1);
    }
}

 

 jdbc.properties内容如下:

 

driverClassName=com.mysql.jdbc.Driver
url=jdbc\:mysql\://localhost\:3306/search
username=root
password=123456

 

 

Blog对应的映射文件Mapper文件:

针对insert,update,delete,select很简单忽略。

 

package com.vnvtrip.search.ibatis.blog.model;

import org.apache.ibatis.annotations.Select;
/**
 *
 * @author longgangbai
 *
 */
public interface BlogMapper {
    @Select("select * from blog where blogid=#{blogid}")
    Blog findById(int id);

}

 

BlogDAO中的代码如下:

    @Override
    public Blog findById(Integer id) {
  try {
      BlogMapper mapper=getSqlSession().getMapper(BlogMapper.class);
      return mapper.findById(id);

 } finally{
     getSqlSession().close();
 }
    }

 

 

 

 

分享到:
评论
1 楼 makemyownlife 2010-08-28  
最近也在研究 ,ibatis3,不知道怎么细化ibatis3的操作,在ibatis2 中有dao框架,在ibatis3中呢?

相关推荐

    ibatis3中使用jpa的方法进行查询

    这需要开发者对Ibatis3的XML配置、JPA的注解以及Spring的整合有一定了解。通过深入学习和实践,你可以在项目中灵活运用这些技术,提升开发效率。 在实际项目中,可以进一步研究如何将Ibatis3的动态SQL与JPA的查询...

    Struts+Spring+Ibatis整合的Jar包

    然而,值得注意的是,虽然这种集成方式降低了开发难度,但随着项目的复杂度增加,管理和维护这样的系统可能会变得复杂,因此在大型项目中,可能需要考虑使用更现代的框架,如Spring Boot和Spring Data JPA等。

    ibatis2.3.4.rar

    Ibatis 是一款优秀的Java持久层框架,它与Hibernate和JPA等ORM框架不同,Ibatis 提供了更为灵活的SQL映射机制,允许开发者直接编写SQL语句,从而更好地控制查询过程,提高性能。在本资源"ibatis2.3.4.rar"中,包含了...

    springMVC+spring+hibernate+jquery分页完整项目,完整代码

    在项目中,SpringMVC充当了应用程序的入口,通过DispatcherServlet接收请求,根据配置的映射规则转发给相应的处理器(Controller)执行业务逻辑,并将结果返回给视图层进行展示。 2. Spring:Spring是Java企业级...

    ibatis2+spring

    《深入解析:iBatis2与Spring的整合应用》 在现代企业级应用开发中,iBatis2和...在实际项目中,根据具体需求,还可以进一步优化配置,如使用MyBatis3代替iBatis2,或者采用Spring Data JPA等更高级的持久层解决方案。

    struts2+spring2.5+ibatis

    Struts2、Spring2.5和iBatis是经典的Java Web开发框架组合,它们共同构建了一个灵活、高效的企业级应用程序架构。在这个组合中,Struts2作为MVC(Model-View-Controller)框架负责处理用户请求,Spring2.5则提供依赖...

    SpringBoot 2.0.2.RELEASE以注解的形式整合 Mybatis+PageHelper (分页)

    至此,我们就完成了SpringBoot 2.0.2.RELEASE中以注解方式整合Mybatis与PageHelper的分页功能。通过这种方式,我们可以轻松实现高效的分页查询,同时避免了手动编写复杂的SQL语句。在实际开发中,这样的整合方式极大...

    ibatis

    iBATIS的目标是简化Java应用程序中的数据访问,通过XML或注解配置将SQL语句与Java对象绑定。 2. **工作原理** iBATIS的核心概念是SqlMap,它是一个XML配置文件,包含了SQL语句和结果映射。当Java对象调用方法时,...

    开发JPA应用.pdf

    - **JPA**(Java Persistence API)是一种规范,旨在为Java应用程序提供一种标准的方式来处理对象持久化问题,尤其关注于ORM(Object-Relational Mapping,对象关系映射)场景。它的提出背景主要是为了解决Java开发...

    spring3.0jar包

    4. **Spring ORM**:ORM(Object-Relational Mapping)模块集成了一些流行的数据持久化框架,如Hibernate、JPA(Java Persistence API)和iBatis。这使得开发者可以在Spring框架中无缝地使用这些ORM工具,进行数据库...

    ssh+ssj+ssi jar包第一部分

    苦恼直接使用此包可以进行ssh ssi ssj 使用jpa开发时支持给中ROM,版本:struts2.1.8+spring2.5.6+ibatis2.3+hibernate3.3.2+structjson+dwr不多说了 分两部分,因为每次不超过 15M, 这些包一共 18M多 第二部分 ...

    spring+struts+ibatis框架搭建

    Ibatis允许开发者在XML配置文件或注解中编写SQL,通过映射接口方法,实现了数据访问与业务逻辑的解耦。在Spring+Struts+Ibatis的组合中,Ibatis作为数据访问层,处理与数据库的交互,Spring通过 ...

    ibatis 与spring3整合

    "Ibatis 与 Spring3 整合"这一主题,涉及到的是两个知名Java框架——Ibatis(一个轻量级的持久层框架)和Spring(一个全面的企业级应用框架)的协同工作。下面我们将深入探讨这一整合过程中的关键知识点。 Ibatis ...

    ssj+ssi+ssh 第二部分jar包

    苦恼直接使用此包可以进行ssh ssi ssj 使用jpa开发时支持给中ROM,版本:struts2.1.8+spring2.5.6+ibatis2.3+hibernate3.3.2+structjson+dwr不多说了 分两部分,因为每次不超过 15M, 这些包一共 18M多 第一部分 ...

    Ibatis 事务处理

    Ibatis是一个轻量级的持久层框架,它允许开发者将SQL语句直接写在XML配置文件或者Java注解中,从而提供了灵活的数据访问方式。在Ibatis中,事务管理是至关重要的,因为它确保了数据库操作的一致性和可靠性。 事务...

    Webwork2+Spring+Ibatis+Hibernate框架中文教程

    Ibatis是一个持久层框架,它简化了数据库操作,允许开发者将SQL语句直接写在XML配置文件中或者Java注解中。Ibatis强调SQL的灵活性,避免了ORM(对象关系映射)框架的性能开销,同时保持了良好的数据库查询控制。 ...

    Spring整合iBatis

    iBatis是一个基于Java的持久层框架,它允许开发者将SQL语句与Java代码分离,提供XML或注解方式定义SQL映射,使得数据库操作更加灵活、易于维护。iBatis的核心是SqlMapConfig.xml配置文件,其中包含了数据源、事务...

    maven-framework-project:基于maven的多框架和多视图融合技术(Struts1,Struts2,Spring,SpringMVC,Hibernate,Ibatis,MyBatis,Spring Data JPA,DWR)

    Maven框架项目该项目不再更新维护,请移步该项目基于maven3.0构建的,项目中融合了Struts1 , Struts2 , Spring , SpringMVC , Hibernate , Ibatis , MyBatis , Spring Data JPA , Spring JDBC , Spring DWR...

Global site tag (gtag.js) - Google Analytics