浅析Mybatis 在CS程序中的应用

 更新时间:2013年07月19日 11:58:19   作者:  
如果是自己用的Mybatis,不需要考虑对配置文件加密,如果不是,那就需要考虑加密,这篇文章主要讲如何配置CS的Mybatis

因为mybatis好使,所以几乎需要操作数据库的时候,我都会使用mybatis,而且在一个正式的项目中,同时存在BS和CS的程序,都使用的Mybatis,使用的相同mapper文件。

Mybatis的XML配置文件正常如下:

复制代码 代码如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<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/YouMapper.xml" />
 </mappers>
</configuration>

为了防止数据库用户名密码泄漏,我将XML进行双向加密,变成了一个字节文件,而且文件名后缀随意。
例如:basic.data,内容局部如下:

根据XML生成Mybatis的SqlSessionFactory,代码如下:

复制代码 代码如下:

public class MyBatis {
 private static final String CONFIG = "basic.data";
 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 {
    inputStream.close();
   } catch (Exception e) {
   }
  }
 }

 public static InputStream getXMLIS(){
  InputStream inputStream = null;
  try {
   //对资源进行加密,解密后处理
   BufferedReader reader = new BufferedReader(new FileReader(new File(Config.LOCATION+"/"+CONFIG)));
   String str = null;
   StringBuffer sbBuffer = new StringBuffer();
   while((str=reader.readLine())!=null){
    sbBuffer.append(str);
   }
   EncrypDES encrypDES = new EncrypDES();
   String result = encrypDES.Decryptor(sbBuffer.toString());
   inputStream = new ByteArrayInputStream(result.getBytes());
   return inputStream;
  } catch (Exception e) {
  }
  return null;
 }

 public SqlSessionFactory getSqlSessionFactory(){
  return sqlSessionFactory;
 }

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

这里的data文件是在src下。
代码中的EncrypDES是一个使用DES的加密解密类。
代码中的Config.LOCATION代码如下:
复制代码 代码如下:

public static String getRealPath() throws Exception {
  String realPath = Config.class.getClassLoader().getResource("").getFile();
  java.io.File file = new java.io.File(realPath);
  realPath = file.getAbsolutePath();
  realPath = java.net.URLDecoder.decode(realPath, "utf-8");
  return realPath;
 }

getRealPath()返回的值赋给LOCATION.

上面代码的主要流程:读取data文件,解密,以流的形式返回给mybatis.
通过Mybatis类就可以在程序的任意地方进行调用了。

除了使用XML方式配置Mybatis外,还可以完全使用JAVA代码进行配置,这种方式比较麻烦,需要创建一个DataSource,然后用Mybatis配置类加载所有需要的mapper.class,这里就不详细介绍了(除非有需要)。

相关文章

  • Springboot配置过滤器实现过程解析

    Springboot配置过滤器实现过程解析

    这篇文章主要介绍了Springboot配置过滤器实现过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • MyBatis中的配置文件详解

    MyBatis中的配置文件详解

    在 MyBatis 中,配置文件分为 全局配置文件(核心配置文件)和映射配置文件,本文给大家介绍MyBatis中的配置文件相关知识,感兴趣的朋友一起看看吧
    2023-10-10
  • 关于Poi读取Excel引发内存溢出问题的解决方法

    关于Poi读取Excel引发内存溢出问题的解决方法

    这篇文章主要给大家介绍了关于Poi读取Excel引发内存溢出问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-08-08
  • Java中BM(Boyer-Moore)算法的图解与实现

    Java中BM(Boyer-Moore)算法的图解与实现

    本文主要介绍了两个大的部分,第一部分通过图解的方式讲解BM算法,第二部分则代码实现一个简易的BM算法,感兴趣的小伙伴可以学习一下
    2022-05-05
  • SpringBoot中的@CacheEvict 注解的实现

    SpringBoot中的@CacheEvict 注解的实现

    本文主要介绍了SpringBoot中的@CacheEvict注解的实现,@CacheEvict 注解用于清空缓存,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-03-03
  • springboot-2.3.x最新版源码阅读环境搭建(基于gradle构建)

    springboot-2.3.x最新版源码阅读环境搭建(基于gradle构建)

    这篇文章主要介绍了springboot-2.3.x最新版源码阅读环境搭建(基于gradle构建),需要的朋友可以参考下
    2020-08-08
  • Spring-ImportSelector接口功能使用案例

    Spring-ImportSelector接口功能使用案例

    ImportSelector接口是至spring中导入内部类或者外部类的核心接口,只需要其定义的方法内返回需要创建bean的class字符串就好了,这篇文章主要介绍了Spring-ImportSelector接口功能介绍,需要的朋友可以参考下
    2023-09-09
  • java制作仿微信视频播放控件

    java制作仿微信视频播放控件

    这篇文章主要介绍了java制作仿微信视频播放控件的方法和代码分享,控件继承自SurfaceView,十分的实用,小伙伴们可以自由扩展。
    2015-04-04
  • 利用Spring IOC技术实现用户登录验证机制

    利用Spring IOC技术实现用户登录验证机制

    这篇文章主要为大家详细介绍了Spring IOC技术实现用户登录验证机制的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-10-10
  • java单例模式使用及注意事项

    java单例模式使用及注意事项

    这篇文章主要介绍了java单例模式使用及注意事项,需要的朋友可以参考下
    2014-04-04

最新评论