文档章节

MyBatis连接Oracle数据库的例子 - 使用Configuration类手动配置连接属性

北风其凉
 北风其凉
发布于 2016/05/22 22:47
字数 605
阅读 1434
收藏 6

之前我曾写过一篇博客,提及了如何建立一个最简单的MyBatis连接Oracle数据库的Demo。

博客地址如下:http://my.oschina.net/Tsybius2014/blog/626206

在这篇博客中,我使用了XML配置MyBatis连接数据库相关的内容,并通过MyBatis提供的函数,直接通过XML文件配置的内容,通过SqlSessionFactory建立SqlSession。

本文将说明另一种建立SqlSession,还是使用 SqlSessionFactory ,但不通过XML配置文件建立,而是通过代码直接建立。

我的电脑操作系统版本为Win7旗舰版(ServicePack1),Oracle版本为Oracle11g

程序使用的jar包有:mybatis-3.2.2.jar、ojdbc14-10.2.0.2.0.jar

之前有配置文件mybatis-config.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="oracle.jdbc.driver.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
        <property name="username" value="用户名"/>
        <property name="password" value="密码"/>
      </dataSource>
    </environment>
  </environments>
  <mappers>
    <mapper resource="BaseMapper.xml"/>
  </mappers>
</configuration>

接口BaseMapper.java定义如下:

import org.apache.ibatis.annotations.Select;

public interface BaseMapper {
    @Select("SELECT 1 FROM DUAL")
    int getTestData();
}

BaseMapper.xml定义如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
    "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="BaseMapper" /> 

最后将main函数写为:

import java.io.InputStream;
import java.io.PrintWriter;
import java.io.StringWriter;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

/**
 * MyBatis使用测试
 * @author Tsybius2014
 * @date 2016年5月22日
 * @time 下午10:39:11
 * @remark
 */
public class MyBatisTest {
    public static void main(String[] args) {
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            SqlSession session = sqlSessionFactory.openSession();
            try {
                BaseMapper mapper = session.getMapper(BaseMapper.class);
                int result = mapper.getTestData();
                System.out.println(result);
            } finally {
                session.close();
            }
        } catch (Exception ex) {
            StringWriter stringWriter = new StringWriter();
            PrintWriter printWriter = new PrintWriter(stringWriter);
            ex.printStackTrace(printWriter);
            System.out.println(stringWriter.toString());
        }
    }
}

此时代码输出的结果为“1”,下面的代码与之等价,我们可以在代码中手动建立Configuration类(org.apache.ibatis.session.Configuration),而不是直接从 mybatis-config.xml 中读取:

import java.io.PrintWriter;
import java.io.StringWriter;

import oracle.jdbc.pool.OracleDataSource;

import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;

/**
 * MyBatis使用测试
 * @author Tsybius2014
 * @date 2016年5月22日
 * @time 下午10:44:06
 * @remark
 */
public class MyBatisTest {
    public static void main(String[] args) {
        try {
            Configuration config = new Configuration();
            OracleDataSource dataSource = new OracleDataSource();
            dataSource.setURL("jdbc:oracle:thin:用户名/密码@127.0.0.1:1521:orcl");
            TransactionFactory transactionFactory = new JdbcTransactionFactory();
            Environment environment = new Environment("development", transactionFactory, dataSource);
            config.setEnvironment(environment);
            config.addMapper(BaseMapper.class);
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(config);
            SqlSession session = sqlSessionFactory.openSession();
            try {
                BaseMapper mapper = session.getMapper(BaseMapper.class);
                int result = mapper.getTestData();
                System.out.println(result);
            } finally {
                session.close();
            }
        } catch (Exception ex) {
            StringWriter stringWriter = new StringWriter();
            PrintWriter printWriter = new PrintWriter(stringWriter);
            ex.printStackTrace(printWriter);
            System.out.println(stringWriter.toString());
        }
    }
}

END

© 著作权归作者所有

北风其凉

北风其凉

粉丝 119
博文 498
码字总数 463468
作品 4
朝阳
程序员
私信 提问
mybatis个人小案例(不喜勿喷)

--------------------------------映射文件配置------------------------------------- <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0......

李永china
2016/05/09
83
0
一个使用MyBatis向Oracle数据库中新增/批量新增数据的例子

我的电脑操作系统版本为Win7旗舰版(ServicePack1),Oracle版本为Oracle11g 程序使用的jar包有:mybatis-3.2.2.jar、ojdbc14-10.2.0.2.0.jar 本例中使用的配置文件mybatis-config.xml、Per...

北风其凉
2016/03/04
202
0
Mybatis XML 映射配置文件

XML 映射配置文件 MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(settings)和属性(properties)信息。文档的顶层结构如下: configuration 配置 properties 属性 settings 设置 ...

银月光海
2015/12/28
283
0
spring mybaits多数据源动态切换

场景说明 日常开发中,连接多个数据库是一个很常见的需求,我们的系统是基于spring boot+mybatis进行数据库的操作,网上常见的思路是基于不同的数据库创建不同的bean,大概的实现方式如下: ...

IT米粉
2018/05/14
0
0
mybatis-xml配置

XML 映射配置文件 MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(settings)和属性(properties)信息。文档的顶层结构如下: configuration 配置 properties 属性 settings 设置 ...

狼族盟约元
2016/11/28
22
0

没有更多内容

加载失败,请刷新页面

加载更多

老也有错?35岁程序员是一道坎,横亘在每个技术职场人的心中

随着互联网的高速发展变革,大龄恐惧症越来越多地在技术圈被人讨论。很多程序员在工作5-10年以后,都会开始思考5年、10年甚至更久以后的自己,会是怎样一种生活工作状态,以及是否会被时代抛...

我最喜欢三大框架
25分钟前
1
0
今日头条算法原理详解全集,值得收藏!

今天,算法分发已经是信息平台、搜索引擎、浏览器、社交软件等几乎所有软件的标配,但同时,算法也开始面临质疑、挑战和误解。今日头条的推荐算法,从 2012 年 9月第一版开发运行至今,已经经...

骚年锦时
38分钟前
4
0
零拷贝:用户态视角

在Linux系统越来越多的人听说过所谓的零拷贝技术,但是我经常遇到很多对这个名词没有完全理解的人。因此,我决定写一些文章,深挖这个问题,希望能揭开这个有用的特性。在这篇文章,我们从用...

凌渡
50分钟前
0
0
以太坊中文文档翻译-区块

本文原文链接 点击这里获取Etherscan API 中文文档(完整版) 完整内容排版更好,推荐读者前往阅读。 区块(Blocks) 区块相关的 API,接口的参数说明请参考Etherscan API 约定, 文档中不单独...

Tiny熊
57分钟前
2
0
Linux 内核的一个问题

是virtio 驱动,但是没有启动 virtio-mmio virtio-mmio.0: Failed to enable 64-bit or 32-bit DMA. Trying to continue, but this might not work.....[ 1.047924] md: ... autorun......

MtrS
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部