文档章节

初使用

solverpeng
 solverpeng
发布于 2016/04/21 17:44
字数 752
阅读 13
收藏 0

参考文档:mybatis-3.2.8.pdf

一 、需要导入的jar包:mybatis-x.x.x.jar

二、如果使用maven的话,可以添加以下依赖到pom.xml:

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>x.x.x</version>
</dependency>

三 、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>
    <properties resource="db.properties"></properties>
    <settings>
    <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
    <environments default="development">
        <environment id="development">
            <!-- 配置 MyBatis 的事务管理器 -->
            <transactionManager type="JDBC" />
            <!-- 配置 MyBatis 使用的数据源 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="" />
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!-- 配置映射文件 -->
        <mapper resource="com/nucsoft/mybatis/bean/mapper/CustomerMapper.xml" />
    </mappers>
</configuration>

四 、Mapper.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="com.nucsoft.mybatis.bean.CustomerMapper">
<!-- 映射 SQL 语句 -->
<select id="selectCustomer" resultType="customer" > 
    select * from customer where id = #{id}
</select>
</mapper>

五 、获取Session

String resource = "mybatis-config.xml";
InputStream inputStream = null;
try {
        inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
        e.printStackTrace();
}
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session = sqlSessionFactory.openSession();

六 、 执行查询

Customer customer = session.selectOne("com.nucsoft.mybatis.bean.CustomerMapper.selectCustomer", 1);

七 、使用注解映射:

(1)定义Mapper接口

public interface CustomerMapper {
@Select("SELECT * FROM customer WHERE id = #{id}")
Customer selectCustomer(int id);
}

(2)在Mabatis配置文件中加入MapperClass

<mapper class="com.nucsoft.mybatis.bean.mapper.CustomerMapper"/>

(3)使用

CustomerMapper customerMapper = session.getMapper(CustomerMapper.class);
Customer customer = customerMapper.selectCustomer(2);

八、几个关键词

(1)SqlSessionFactoryBuilder

该类可以被实例化、使用和丢弃。当你创建一个SQLSessionFactoryBuilder时,没必要一直保存着。因此最好的作用域就是在一个方法内。

通过SQLSessionFactoryBuilder可以获取到SqlSessionFactory对象。

(2)SqlSessionFactory

一旦创建,它会存在整个应用程序的执行过程中。最好不要重复创建该对象。因此最好的 scope of SqlSessionFactory 是 application scope。

它能被许多方式来实现。最简单的就是单例模式或静态单例模式。

(3)SqlSession

可以通过 SqlSessionFactory 来获取。每个线程应该有它自己的SQLSession实例。SQLSession的实例是不可被共享的,且是线程不安全的。

因此 the best scope is 请求或方法范围。从来不要将一个SQLSession的引用放入到静态代码块或一个类中。也不要将SQLSession的引用放入

任何被管理的范围内,如HttpSession于Servlet框架。如果你使用任何形式的web框架,考虑SQLSession遵循类似HttpRequest范围,换句话说,

如果接受一个http请求,那么你可以open 一个 SQLSession,然后返回响应,然后你关闭SQLSession,关闭SQLSession是非常重要的。你应该确认

它被关闭在一个finally语句块中。像以下这个样子:

SqlSession session = sqlSessionFactory.openSession();
try {
    // do work
} finally {
    session.close();
}

始终使用此模式来确保所有数据库资源已经被关闭。

(九)Mapper Instances

映射器是你所创建的接口绑定到你的映射命令。Mapper接口的实例从SQLSession中获取,比如说,任何最广泛范围的Mapper实例都是从SQLSession的请求中获取的。

因此一个Mapper实例的范围最好是方法范围。在一个方法内使用,然后丢弃。



© 著作权归作者所有

solverpeng

solverpeng

粉丝 11
博文 87
码字总数 40353
作品 0
朝阳
程序员
私信 提问
转Elasticsearch顶尖高手系列课程

Elasticsearch,是目前行业中非常热门的一个技术。Elasticsearch是一种分布式的海量数据搜索与分析的技术,可以用于电商网站、门户网站、企业IT系统等各种场景下的搜索引擎,也可以用于对海量...

小花卷juan
2017/06/24
126
0
Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验

Net Core平台灵活简单的日志记录框架NLog+SqlServer初体验 前几天分享的"[Net Core平台灵活简单的日志记录框架NLog+Mysql组合初体验][http://www.cnblogs.com/yilezhu/p/9416439.html]" 反响...

依乐祝
2018/08/09
0
0
高三要开始了,我来帮你选选书?

本文主要针对文科宝宝们,本人16年陕西文科狗,全国二卷607分,省排531。 我在我的其他答案中强调了,你需要有自己的高三复习计划,而其中最为重要的是要有自己的一轮复习,那么最开始你要的...

吉米
2017/10/01
0
0
《跟菜鸟学Cisco UC部署实战》-视频课程-学习投资

有朋友,有学生,问到学习投资些什么,注意:投资可重复利用!就看你怎么用!!! 所以,我写下此博文,目的为了更方便学员学习! 一.在线培训(直播): 1. 学费: 8168元。 (目前没开班,如...

CTO_LiuJinFeng
2017/06/12
0
0
初识Gradle系列一

初识Gradle系列一 Arccode's blog2017-10-226 阅读 JavaGradle 背景 以前听说过Gradle,也查阅过相关资料,自定义生命周期等等,比Maven牛X, 但Maven在项目中已经够用, 所以一直未做构建迁移. 今...

Arccode's blog
2017/10/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
今天
12
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
今天
7
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
今天
8
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
今天
11
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部