MyBatis3入门
这里对mybatis的入门介绍以官方最新MyBatis3.4.1为准,具体文档及jar包请访问:https://github.com/mybatis/mybatis-3/releases。
以前经常都在使用mybatis,但通常都是和Spring结合起来用,在配置的时候往往都是在网上或者东配置西配置然后就能用了,但是一直没有仔细的对mybatis有一个系统而全面的配置。哪怕就是单独写一个mybatis的demo都写不出来,前段时间刚好发现mybatis的一篇官方用户手册,所以想从头对mybatis有一个系统而全面的认识。同样对官方用户手册的全篇翻译也是近期的一个小目标。
为了方便对mybatis完全不了解,不知道从何入手的新手做一个简单的讲解。想要写一个mybatis的demo不用去创建一个Java EE的Web工程,这是我以前很大很大的一个误区,以为对此类框架的使用我必须要去创建一个Web工程,创建好了一个Web工程,我又要得去写html,写一个servlet交互等等等等,一想到这儿,我就不想写了。其实大可不必,只需要创建一个普通Java工程即可写出一个mybatis的demo。
我们首先来看看工程的包结构。mapper包是什么呢,我不知道怎么形容,映射,或者可以是dao层——对数据库的操作。pojo即是java实体类。util提供一些工具类。Main即客户端测试代码。mybatis-config.xml为mybatis的配置文件。

我们还需要为工程引入两个jar包。
我们首先要理解清楚mybatis的核心是什么,官方用户手册中说,每个MyBatis应用都以一个SqlSessionFactory为核心。一个SqlSessionFactory实例能够通过SqlSessionFactoryBuilder获得。SqlSessionFactoryBuilder能够从XML配置文件或者从配置类构建一个SqlSessionFactory实例。(Every MyBatis application centers around an instance of SqlSessionFactory. A SqlSessionFactory instance can be acquired by using the SqlSessionFactoryBuilder. SqlSessionFactoryBuilder can build a SqlSessionFactory instance from an XML configuration file, or from a custom prepared instance of the Configuration class.)
我们对SqlSessionFactory的获取采用从XML配置文件的方式获取。首先来实现SessionFactory类。
package day_8_mybatis.util; import java.io.IOException;
import java.io.InputStream; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; /**
* 获取SqlSession实例
* @author turbo
*
* 2016年9月11日
*/
public class SessionFactory {
public static SqlSession getSqlSession(String resource) throws IOException{
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession(); return sqlSession;
}
}
接着开始写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>
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test"/>
<property name="username" value="root"/>
<property name="password" value="0000"/>
</properties>
<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="day_8_mybatis/mapper/UserMapper.xml"/>
</mappers>
</configuration>
配置文件中的properties也可以采用外部引用的方式,及将6-11行修改为:
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
name=root
password=XDP
注:此篇MyBatis3入门不讲详细原理及各参数是什么意思,主要是对mybatis的一个demo入门程序。
下面新建一个User pojo类,其中的变量对应数据库中user表的字段(当然这也不是必须的)。
package day_8_mybatis.pojo; /**
* User实体类
* @author turbo
*
* 2016年9月11日
*/
public class User {
private int id;
private String name;
private String age;
private String sex;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
现在开始构建mapper包里的UserMapper.java和UserMapper.xml
UserMapper.java就是一个对数据库的访问接口,不用去实现,因为mybatis已经为我们完成了这件事。
package day_8_mybatis.mapper; import day_8_mybatis.pojo.User; /**
* mapper数据库访问接口
* @author turbo
*
* 2016年9月11日
*/
public interface UserMapper {
User getUserById(int id);
}
UserMapper.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="day_8_mybatis.mapper.UserMapper">
<select id="getUserById" resultType="day_8_mybatis.pojo.User">
select * from user where id = #{id}
</select>
</mapper>
需要注意的地方是,第5行的namespace必须是此mapper.xml文件对应的mapper接口。第6行的id必须是mapper接口的方法名称,resultType在这里必须是User类的绝对路径(因为此处查询的是一个User类),当然你也可以以别名的方式。第7行#{id}的“id”必须是mapper接口中getUserById方法的参数名称。
下面我们就可以写客户端类进行测试了。
package day_8_mybatis; import java.io.IOException;
import java.io.InputStream; import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder; import day_8_mybatis.mapper.UserMapper;
import day_8_mybatis.pojo.User;
import day_8_mybatis.util.SessionFactory; /**
* 客户端
* @author turbo
*
* 2016年9月11日
*/
public class Main { /**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws Exception {
String resource = "day_8_mybatis/mybatis-config.xml"; //获取mybatis配置文件路径
SqlSession sqlSession = SessionFactory.getSqlSession(resource); //通过SessionFactory工具类(此工具类为自己构造即util包中的SessionFactory)构造SqlSession UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user = userMapper.getUserById(1); System.out.println(user.getAge());
} }
至于数据库就是简单的几个字段,根据如图创建即可。

这样我们就完成了一个mybatis的一个入门demo程序。
MyBatis3入门的更多相关文章
- MyBatis3 入门学习指南
官网原文:http://www.mybatis.org/mybatis-3/zh/index.html 1.简介 1.1 什么是 MyBatis? MyBatis 是一款优秀的持久层框架,它支持定制化 ...
- 【Mybatis】mybatis3入门
mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可 ...
- Java SSM框架之MyBatis3(一)MyBatis入门
MyBatis3介绍 mybatis就是一个封装来jdbc的持久层框架,它和hibernate都属于ORM框架,但是具体的说,hibernate是一个完全的orm框架,而mybatis是一个不完全的o ...
- JavaEE学习文章汇总-ssm框架
Spring-SpringMVC-Mybatis 1:Maven创建webapp项目 Maven 下的spring框架(一创建项目) 2:mybatis3 入门教程 mybatis实战教程(mybat ...
- SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession作用域(Scope)和生命周期
可以说每个MyBatis都是以一个SqlSessionFactory实例为中心的.SqlSessionFactory实例可以通过SqlSessionFactoryBuilder来构建.一是可以通过XM ...
- Mybatis3 快速入门
Mybatis3 快速入门 目前常见的持久层java框架有Hibernate,Mybatis,SpringData.笔者比较喜欢用SpringData.Hibernate 和 Mybatis 也经常用 ...
- mybatis3.2.7 原理和入门程序
使用jdbc操作数据库有以下缺点 |--数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁开启和关闭,造成数据源资源浪费,影响数据库性能. 设想:使用数据库连接池管理数据库连接. ...
- MyBatis入门学习教程-Mybatis3.x与Spring4.x整合
一.搭建开发环境 1.1.使用Maven创建Web项目 执行如下命令: mvn archetype:create -DgroupId=me.gacl -DartifactId=spring4-myba ...
- MyBatis入门教程(基于Mybatis3.2)
MyBatis和Hibernate一样都是基于ORM的关系型数据库框架 ORM工具的基本思想: 1.从配置文件(通常是XML配置文件中)得到 sessionfactory. 2. 由sessionfa ...
随机推荐
- socket模拟通信实现ARQ停止等待协议
//服务端 import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; im ...
- 现代3D图形编程学习-设置三角形颜色(译)
本书系列 现代3D图形变成学习 http://www.cnblogs.com/grass-and-moon/category/920962.html 设置颜色 这一章会对上一章中绘制的三角形进行颜色的 ...
- __init__.py
python中的Module是比较重要的概念.常见的情况是,事先写好一个.py文 件,在另一个文件中需要import时,将事先写好的.py文件拷贝 到当前目录,或者是在sys.path中增加事先写好的 ...
- 对MySQL数据量日益增长产生的一点小想法
最近一直在想一个问题 MySQL数据量日益庞大,目前单表总记录数有 300W+,导致sql语句执行的速度变慢,如果一直这样增长下去,总有一天会爆炸的.怎么办??怎么办?? 第一:想到的必然是 添加索引 ...
- ios 渐进淡出
在github上寻找的经典demo //以view为继承类 LazyFadeInView-master https://github.com/itouch2/LazyFadeInView //以Lab ...
- 免费给自己的网站加 HTTPS
简介 本文是通过 Let's Encrypt 提供的免费证书服务,实现让自己的网站加上 HTTPS.我的网站 -- hellogithub,就是通过这种方式实现的 HTTPS,效果如下: Let's ...
- 浅谈C#抽象类
抽象类 先说个事,一个类实例化为一个实例.就是一只狗,实例化一下,就成了一只哈士奇(具体的二哈).但是,一个动物类实例化呐,成了啥? 压根就不能实例化.这,就是抽象类的概念引入. 概念:C#允许把类和 ...
- C# 类型转换is和as 以及性能陷阱
1.在C#2.0之前,as只能用于引用类型.而在C#2.0之后,它也可以用于可空类型.其结果为可空类型的某个值---空值或者一个有意义的值.示例: static void Main(string ...
- mvc中razor的一个bug
具体东西就不多说了,所有编译,代码都是木有问题的. 结果预览页面的时候竟然告诉我编译错误,尼玛这不科学啊. 来看看错误页面 看着问题大概应该是缺少} ,或者多了个} 倒置的编译错误才对,但是编译生成完 ...
- File Transfer
本博客的代码的思想和图片参考:好大学慕课浙江大学陈越老师.何钦铭老师的<数据结构> 代码的测试工具PTA File Transfer 1 Question 2 Explain First, ...