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

Batis3.0 xml配置方式的应用(JPA+IBatis3.0应用)

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

IbatisSessionFactory 的代码重点如下:

注意看有颜色部分代码:


Java代码

   1. package com.vnvtrip.search.ibatis.utils; 
   2.  
   3. import java.sql.Connection; 
   4. import java.util.Properties; 
   5. import java.util.logging.Logger; 
   6.  
   7. import javax.sql.DataSource; 
   8.  
   9. import org.apache.commons.dbcp.BasicDataSourceFactory; 
  10. import org.apache.ibatis.mapping.Environment; 
  11. import org.apache.ibatis.session.Configuration; 
  12. import org.apache.ibatis.session.ExecutorType; 
  13. import org.apache.ibatis.session.SqlSession; 
  14. import org.apache.ibatis.session.SqlSessionFactory; 
  15. import org.apache.ibatis.session.SqlSessionFactoryBuilder; 
  16. import org.apache.ibatis.session.TransactionIsolationLevel; 
  17. import org.apache.ibatis.transaction.TransactionFactory; 
  18. import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory; 
  19.  
  20. import com.vnvtrip.search.ibatis.blog.model.BlogMapper; 
  21.  
  22. /**
  23.  * 
  24.  * 
  25.  * 创建类似Hibernate的HibernateSessionFactoryUtils的类
  26.  * @author longgangbai
  27.  * 
  28.  */ 
  29. @SuppressWarnings("serial") 
  30. public class IbatisSessionFactory implements SqlSessionFactory { 
  31.      
  32.     public static final Logger LOG = Logger.getLogger(IbatisSessionFactory.class.getName()); 
  33.  
  34. <span style="color: rgb(255, 0, 0);">    /**
  35.      * 针对特殊的应用
  36.      * 读取config.properties文件,存放了数据库连接参数等信息 
  37.      */ 
  38.     private static final Properties props = new Properties() { 
  39.     { 
  40.         try { 
  41.         load(IbatisSessionFactory.class.getResourceAsStream("jdbc.properties")); 
  42.         } catch (Exception e) { 
  43.         e.printStackTrace(); 
  44.         } 
  45.     } 
  46.     };</span> 
  47.      
  48.     /** 根据参数得到某个具体的iBatis数据源工厂实例 */ 
  49.     public static SqlSessionFactory getInstance() { 
  50.     if (sqlSessionFactory == null) { 
  51.         try { 
  52.         initSqlSessionFactory(); 
  53.         } catch (Exception e) { 
  54.         e.printStackTrace(); 
  55.         } 
  56.     } 
  57.     return sqlSessionFactory; 
  58.     } 
  59. <span style="color: rgb(153, 204, 0);">   /**
  60.     * 采用注解配置的方式
  61.     * @throws Exception
  62.     */ 
  63.     private static void initSqlSessionFactory() throws Exception { 
  64.     //获取数据源     
  65.     DataSource datasource = BasicDataSourceFactory.createDataSource(props); 
  66.         //创建事务工厂 
  67.     TransactionFactory transFactory = new JdbcTransactionFactory(); 
  68.     //获取上下文环境 
  69.     Environment environment = new Environment("development", 
  70.     transFactory, datasource); 
  71.     //创建配置对象 
  72.     Configuration config = new Configuration(environment); 
  73.     //添加映射的类 
  74.     config.addMapper(BlogMapper.class); 
  75.     //构建的会话工厂 
  76.     SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); 
  77.     sqlSessionFactory = builder.build(config); 
  78.  
  79.     }</span> 
  80.  
  81.     // 真正“做事”的实例 
  82.     private static SqlSessionFactory sqlSessionFactory = null; 
  83.  
  84.     public Configuration getConfiguration() { 
  85.     return sqlSessionFactory.getConfiguration(); 
  86.     } 
  87.  
  88.     public SqlSession openSession() { 
  89.     return sqlSessionFactory.openSession(); 
  90.     } 
  91.  
  92.     public SqlSession openSession(boolean arg0) { 
  93.     return sqlSessionFactory.openSession(arg0); 
  94.     } 
  95.  
  96.     public SqlSession openSession(Connection arg0) { 
  97.     return sqlSessionFactory.openSession(arg0); 
  98.     } 
  99.  
100.     public SqlSession openSession(ExecutorType arg0) { 
101.     return sqlSessionFactory.openSession(arg0); 
102.     } 
103.  
104.     public SqlSession openSession(ExecutorType arg0, boolean arg1) { 
105.     return sqlSessionFactory.openSession(arg0, arg1); 
106.     } 
107.  
108.     public SqlSession openSession(ExecutorType arg0, Connection arg1) { 
109.     return sqlSessionFactory.openSession(arg0, arg1); 
110.     } 
111.  
112.     @Override 
113.     public SqlSession openSession(TransactionIsolationLevel arg0) { 
114.     return sqlSessionFactory.openSession(arg0); 
115.     } 
116.  
117.     @Override 
118.     public SqlSession openSession(ExecutorType arg0, 
119.         TransactionIsolationLevel arg1) { 
120.     return sqlSessionFactory.openSession(arg0, arg1); 
121.     } 
122. } 

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内容如下:


Java代码

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

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();
}
    }

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics