Mybaits入门之起航
前言
Mybaits技术现在很多公司都在使用,它提供了简单的API可以快速进行数据库操作,所以不管是自己做系统还是找工作都有必要了解一下。
学习一门技术如果是入门的话要么买书要么就是阅读官方的文档,而且官方的文档全且及时更新,所以建议阅读官方文档,本系列入门教程其实就是官方文档的简易汉化版(哈哈)
1.通过XML建立SqlSessionFactory
Mybaits应用是一个SqlSessionFactory的实例,而SqlSessionFactory时通过SqlSessionFactoryBuilder获得的。SqlSessionFactoryBuilder可以使用xml配置文件或者一些预先准备配置类实例化一个SqlSessionFactory。
通过xml配置获得一个SqlSessionFactory实例十分简单,推荐你使用类路径,但是你也可以使用任何的InputStream实例(简单的讲,你把读取的文件放到InputStream流里面就行,文件随你放哪里),这里注意一下Mybaits
有一个工具类叫Resources,他提供了很多简单的方法获取资源。
xml配置文件包含mybaits系统的核心,包括数据库链接、事物控制等 这里我们先贴一个简单的代码
String resource ="cn/dota/uc/test/cfg.xml";
InputStream is = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
<?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=""/>
<property name="url" value=""/>
<property name="username" value=""/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/xxx/xxx/BlogMapper.xml" />
</mappers>
</configuration>
注意图中标红的需要制定为类路径
还有一种方式时通过Configuration类设置属性,这种方式侵入了代码大家可以自己看这段的文档,本系列就不介绍了
2.通过SqlSessionFactory获得SqlSession
通过SqlSession你就可以开始操作数据库了如下代码
现在版本的Mybatis有了新的方式可以使用接口进行开发如下
一种实在BlogMapper.xml中指定sql语句
<?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="cn.dota.uc.test.BlogMapper">
<select id="selectBlog" resultType="cn.dota.uc.test.Blog">
select * from Blog where id = #{id}
</select>
</mapper>
SqlSession session = sqlSessionFactory.openSession();
try{
Blog blog = session.selectOne("cn.dota.uc.test.BlogMapper.selectBlog", 100);
} finally{
session.close();
}
还有一种就是使用接口,首先我们要定义一个接口BlogMapper,代码如下
<?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="cn.dota.uc.test.BlogMapper">
</mapper>
SqlSession session = sqlSessionFactory.openSession();
try{
BlogMapper mapper = session.getMapper(BlogMapper.class);
Blog blog = mapper.selectBlog(101);
} finally{
session.close();
}
这种方式需要注意的就是配置文件的namespace 中 value必须和 接口相对应
public interface BlogMapper {
@Select("SELECT * FROM blog where id = #{id}")
Blog selectBlog(int id);
}
3总结
所以简单来说 Mybatis开发的步骤就是
- 编写配置文件和接口映射文件
- 使用SqlSessionFactoryBuilder读取配置文件并且获得SqlSessionFactory;
- 使用SqlSessionFactory获得SqlSession 然后可以通过两种方式进行数据库操作
生命周期和作用域
SqlSessionFactoryBuilder 仅仅用于创造sqlSessionFactory 所以可以使用完丢弃
SqlSessionFactory 单例和静态类是最好的方式
SqlSession 局部作用域就可以了
Mybaits入门之起航的更多相关文章
- mybaits入门
1.回顾jdbc开发 orm概述 orm是一种解决持久层对象关系映射的规则,而不是一种具体技术.jdbc/dbutils/springdao,hibernate/springorm,mybaits同属 ...
- Mybaits入门使用
1.pom.xml配置信息 <dependencies> <dependency> <groupId>junit</groupId> <artif ...
- mybaits入门(含实例教程和源码) http://blog.csdn.net/u013142781/article/details/50388204
前言:mybatis是一个非常优秀的存储过程和高级映射的优秀持久层框架.大大简化了,数据库操作中的常用操作.下面将介绍mybatis的一些概念和在eclipse上的实际项目搭建使用. 一.mybati ...
- mybaits入门学习
学习了简单的mybatis的配置 Bean层: 这个都会很简单 一个完整的Bean 需要getter和setter方法还需要一个空的构造方法和一个满的构造方法. Dao层: 创建一个接口就ok了 pa ...
- mybatis入门百分百
今天重新返回来看自己的mybatis,总结了一些更好入门的办法,下面用最简单的方法带领大家入门. 此处先引入类包的关系图片 1.构建一个==普通==maven项目 构建好之后向pom.xml添加一下依 ...
- Mybatis教程(一)
1 Mybatis教程(一) 学习过的持久层框架:DBUtils , Hibernate Mybatis就是类似于hibernate的orm持久层框架. 为什么学Mybatis? 目前最主流 ...
- 深入浅出MyBatis技术原理与实战
第1 章 MyBatis 简介..................................................................................... ...
- MyBaits框架入门总结
MBaits简介 联系方式:18873247271(微信同步) 廖先生 qq:1727292697 MyBatis的前身叫iBatis,本是apache的一个开源项目, 2010年这个项目由apach ...
- My Baits入门(一)mybaits环境搭建
1)在工程下引入mybatis-3.4.1.jar包,再引入数据库(mysql,mssql..)包. 2)在src下新建一个配置文件conf.xml <?xml version="1. ...
随机推荐
- Python中进行Base64编码和解码
Base64编码 广泛应用于MIME协议,作为电子邮件的传输编码,生成的编码可逆,后一两位可能有“=”,生成的编码都是ascii字符.优点:速度快,ascii字符,肉眼不可理解缺点:编码比较长,非常容 ...
- javascript将异步校验表单改写为同步表单
同步表单校验的缺点 响应错误信息时,需要重新加载整个页面(虽然有缓存,客户端仍然需要通过http协议对比每个文件是否有更新,以保持文件最新) 服务器响应错误以后,用户之前所输入的信息全部丢失了,用户需 ...
- Xamarin.Android 如何使用Assets目录下的文件
原文:Xamarin.Android 如何使用Assets目录下的文件 个人原创,转载注明出处:http://blog.csdn.net/supluo/article/details/43672411 ...
- Linux的正常关机
Azure上的 IaaS 虚拟机可使用多种方式关闭,例如通过 Azure 管理门户.Azure Powershell cmdlet 或 CLI 工具,甚至还可以由交互式登录的用户关闭.Azure 平台 ...
- 2016 Multi-University Training Contest 2 总结
第二次多校,出师未捷身先死 欣君看了一下09题,高呼水题,迅速码好,一A. 我看了11题,发现分奇偶讨论即可,于是按思路写好,一A. 欣君搞鼓出01题的一个公式,于是我照着写,一WA.简直不可思议,发 ...
- 深入Blocks分析
1.简介 从iOS4开始,苹果引入了这个C语言的扩充功能"Blocks",在一些特定的场景下也是一把利刃.我前面一篇博客中初步介绍了Blocks这个东西,主要是语法的介绍(< ...
- uva 10129 poj 1386 hdu 1116 zoj 2016 play on words
//本来是想练一下欧拉回路的,结果紫书上那题是大水题!!!!! 题意:给出n个单词,是否可以把单词排列成每个单词的第一个字母和上一个单词的最后一个字母相同 解:欧拉通路存在=底图联通+初度!=入度的点 ...
- OpenGL中glRotatef()函数究竟对矩阵做了什么
OpenGL中glRotatef()函数究竟对矩阵做了什么 我们知道OpenGL中维持着两套矩阵,一个是模型视图矩阵(model view matrix),另一个是投影矩阵(projection ma ...
- #include <array>
array是静态数组,在栈上,不可以变长 vector比array更常用 不需要变长,容量较小,用array 需要变长,容量较大,用vector 1 array 1 array新数组 //std::a ...
- 在MyEclipse中统计项目行数
今天闲来无事就把自己曾经做过的一些小项目拿出来看一下,把一些自己觉得不好的地方又又一次改一下,突然想起有人说过大学生在毕业时至少要完毕多少代码才算合格,所以我就想统计一下自己做过的项目的代码量,在网上 ...