熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> JSP教程 >> 正文

Mybatis 在CS程序中的應用

2013-11-15 12:14:06  來源: JSP教程 
如果是自己用的Mybatis不需要考慮對配置文件加密如果不是那就需要考慮加密這篇文章主要講如何配置CS的Mybatis  

  因為mybatis好使所以幾乎需要操作數據庫的時候我都會使用mybatis而且在一個正式的項目中同時存在BS和CS的程序都使用的Mybatis使用的相同mapper文件

Mybatis的XML配置文件正常如下

復制代碼 代碼如下:
<?xml version="" encoding="UTF" ?>
<!DOCTYPE configuration
  PUBLIC "//mybatisorg//DTD Config //EN"
  "
<configuration>
 <environments default="development">
  <environment id="development">
   <transactionManager type="JDBC" />
   <dataSource type="POOLED">
    <property name="driver" value="driver" />
    <property name="url" value="url" />
    <property name="username" value="username" />
    <property name="password" value="password" />
   </dataSource>
  </environment>
 </environments>

 <mappers>
  <mapper resource="com/isea/dao/YouMapperxml" />
 </mappers>
</configuration>

  
為了防止數據庫用戶名密碼洩漏我將XML進行雙向加密變成了一個字節文件而且文件名後綴隨意
例如basicdata內容局部如下

  

  根據XML生成Mybatis的SqlSessionFactory代碼如下

復制代碼 代碼如下:
public class MyBatis {
 private static final String CONFIG = "basicdata";
 private SqlSessionFactory sqlSessionFactory;

 private static MyBatis instance = new MyBatis();

 private MyBatis(){
  InputStream inputStream = null;
  try {
   inputStream = getXMLIS();
   if(inputStream==null){
    throw new RuntimeException("數據庫信息配置失敗!");
   }
   sqlSessionFactory = new SqlSessionFactoryBuilder()build(inputStream);
  } finally{
   try {
    inputStreamclose();
   } catch (Exception e) {
   }
  }
 }

 public static InputStream getXMLIS(){
  InputStream inputStream = null;
  try {
   //對資源進行加密解密後處理
   BufferedReader reader = new BufferedReader(new FileReader(new File(ConfigLOCATION+"/"+CONFIG)));
   String str = null;
   StringBuffer sbBuffer = new StringBuffer();
   while((str=readerreadLine())!=null){
    sbBufferappend(str);
   }
   EncrypDES encrypDES = new EncrypDES();
   String result = encrypDESDecryptor(sbBuffertoString());
   inputStream = new ByteArrayInputStream(resultgetBytes());
   return inputStream;
  } catch (Exception e) {
  }
  return null;
 }

 public SqlSessionFactory getSqlSessionFactory(){
  return sqlSessionFactory;
 }

 public static MyBatis getInstance(){
  return instance;
 }
}

  
這裡的data文件是在src下
代碼中的EncrypDES是一個使用DES的加密解密類
代碼中的ConfigLOCATION代碼如下

復制代碼 代碼如下:
public static String getRealPath() throws Exception {
  String realPath = ConfigclassgetClassLoader()getResource("")getFile();
  javaioFile file = new javaioFile(realPath);
  realPath = filegetAbsolutePath();
  realPath = javanetURLDecoderdecode(realPath "utf");
  return realPath;
 }

  
getRealPath()返回的值賦給LOCATION

上面代碼的主要流程讀取data文件解密以流的形式返回給mybatis
通過Mybatis類就可以在程序的任意地方進行調用了

除了使用XML方式配置Mybatis外還可以完全使用JAVA代碼進行配置這種方式比較麻煩需要創建一個DataSource然後用Mybatis配置類加載所有需要的mapperclass這裡就不詳細介紹了(除非有需要)


From:http://tw.wingwit.com/Article/program/Java/JSP/201311/20548.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.