Mybatis入门实例
MyBatis 简介

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
构建项目
使用gradle
compile 'org.mybatis:mybatis:3.4.6'
使用Maven
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>x.x.x</version>
</dependency>
准备
使用gradle导入MySQL驱动
compile 'mysql:mysql-connector-java:8.0.13'
准备数据库

入门实例
SqlSessionFactory
每个基于MyBatis的应用都是以一个SqlSessionFactory的实例为中心的。它可以通过SqlSessionFactoryBuilder产生。而SqlSessionFactoryBuilder的实例则可以从XML配置文件或者一个预先设定好的Configuration的实例构建出来。
MyBatis包含了一个名叫Resources的工具类,它包含一些使用方法,可以使得从classpath或者其他位置加载资源文件更加方便。
我们可以采用如下的方式使用XML构建SqlSessionFactory:
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
编写XML配置文件
在XML配置文件中,包含了对MyBatis系统的核心设置,包含获取数据库连接实例的数据源和决定事务作用域和控制方式的事务管理器等。
一个简单的配置文件示例如下:
<?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>
<!--配置MyBatis的环境设置 -->
<environments default="development">
<!-- 开发环境下的环境设置-->
<environment id="development">
<transactionManager type="JDBC"/>
<!--配置数据库连接-->
<dataSource type="POOLED">
<!--MySQL驱动,使用旧版驱动会报错-->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/>
<!--相应的URL,在某个驱动版本之后,不使用SSL会报错,不设置时区也会报错,后面设置接受的字符编码等-->
<property name="url" value="jdbc:mysql://127.0.0.1:3306/java?useSSL=true&
serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
</environment>
</environments>
<!--SQL映射-->
<mappers>
<mapper resource="Mapper/StudentMapper.xml"/>
</mappers>
</configuration>
从 SqlSessionFactory 中获取 SqlSession
SqlSessionFactory 是一个工厂类,用来生产SqlSession类实例。
SqlSession 实例包含了所有面向数据库执行SQL命令所需要的全部方法,可以通过SqlSession实例来直接执行已经映射了的SQL语句,
我们可以使用如下的方法获取SqlSession:
SqlSession sqlSession = sqlSessionFactory.openSession();
为结果创建DataObject
为了将从数据库中获取的结果集保存在对象中,我们需要为其创建一个DataObject,按照需求为每个字段创建属性变量。对于一些不需要的属性比如自增的ID,可以无需创建对应的属性变量。
相应的DataObject:
package TestMybatis;
public class DataObject {
private int id;
private String name;
private int num;
private String birthday;
private String department;
//----------Setter and Getter--------------
public int getId() {
return id;
}
public String getName() {
return name;
}
public int getNum() {
return num;
}
public String getBirthday() {
return birthday;
}
public String getDepartment() {
return department;
}
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public void setNum(int num) {
this.num = num;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public void setDepartment(String department) {
this.department = department;
}
//----------Setter and Getter--------------
@Override
public String toString(){
return getName() + " 的ID是 " + getId() + " 出生于 " + getBirthday() + " 是 " + getDepartment() + "学院的学生";
}
}
为SQL语句创建映射
在MyBatis中,使用的SQL语句都是通过映射定义的。存在XML映射以及Java注解两种方法。对于简单的SQL语句Java注释可以轻松应对,但是对于一些复杂的语句,还是推荐使用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-->
<mapper namespace="StudentMapper">
<!--
在select标签中定义一个select语句。其唯一的ID属性为getStudent,查询所需要使用到的参数类型为int
查询返回的类型为TestMybatis.DataObject,即将查询结果封装成一个DataObject类的对象进行返回
-->
<select id="getStudent" parameterType="int" resultType="TestMybatis.DataObject">
select * from student where id=#{id}
</select>
</mapper>
在这里我们就可以向上翻一翻上面的MyBatis的配置文件,在在下方的mapper中引用了我们刚刚编写的StudentMapper.xml,这样就完成了映射的注册。
剩下的几步
最后使用获取的sqlSession进行查询,并且打印返回的实体类:
DataObject data = sqlSession.selectOne("getStudent",100);
System.out.println(data);

Mybatis入门实例的更多相关文章
- Mybatis入门实例解析
写在前面:本文全程根据Mybatis官网进行入门讲解.毫无疑问,官方文档是学习这门技术最权威的资料,与此同时我们也知道官方文档对待入门小白基本上不太友好,没有入门demo.开篇就是小白们不懂的内容.有 ...
- 2.mybatis入门实例 连接数据库进行查询
1.新建项目,添加mybatis和mysql的jar包 2.在mysql中新建表user[id,name,age] CREATE TABLE `users` ( `id` ) NOT NULL aut ...
- MyBatis入门实例-包括实体类与数据库字段对应&CLOB字段处理
1.我的开发环境是 jdk1.7+ecplise+oracle 11g 用到的jar包:mybatis-3.1.1.jar ojdbc6.jar 2.项目整体结构 3.首先配置conf.xml ...
- MyBatis入门实例 ——Mapper.xml(zz)
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBL ...
- mybatis入门案例分析
mybatis入门案例分析 一.设计模式分析 public class MybatisTest { public static void main(String[] args) throws Exce ...
- mybatis 详解(二)------入门实例(基于XML)
通过上一小节,mybatis 和 jdbc 的区别:http://www.cnblogs.com/ysocean/p/7271600.html,我们对 mybatis有了一个大致的了解,下面我们通过一 ...
- mybatis 详解(三)------入门实例(基于注解)
1.创建MySQL数据库:mybatisDemo和表:user 详情参考:mybatis 详解(二)------入门实例(基于XML) 一致 2.建立一个Java工程,并导入相应的jar包,具体目录如 ...
- 1. mybatis 的入门实例
mybatis 的入门实例 1.创建一个普通的Java项目 1.加入jar包(所有mybatis 和mysql) 2.加入配置文件 src 目录下 (1) db.properties mysql.us ...
- mybatis学习一:基于xml与注解配置入门实例与问题
注:本case参考自:http://www.cnblogs.com/ysocean/p/7277545.html 一:Mybatis的介绍: MyBatis 本是apache的一个开源项目iBatis ...
随机推荐
- CS61A hw01
前不久在知乎上看到CS61A 和CS61B spring18 开课的消息.上去看了一眼,发现真的不错,所有proj hw都可以本地测试!也就是说除了没有课程成绩和官方讨论区和TA解答外,这个课完全可以 ...
- QEMU KVM libvirt 手册(3) - Storage Media
访问Hard Drive 使用-hda –hdb qemu-system-x86_64 -enable-kvm -name ubuntutest -m 2048 -hda ubuntutest.im ...
- 简单 v.s. 基础
无论做平面设计还是做摄影创作,其基础都是一些比较粗浅的看似毫无用处的简单技能.例如画直线.拍挂在墙上的电视机,不一而足. 同样的现象还能在web的前端设计中看到.一堆类似小孩学绘画的标签,几个可以更改 ...
- 脑残式网络编程入门(四):快速理解HTTP/2的服务器推送(Server Push)
本文原作者阮一峰,作者博客:ruanyifeng.com. 1.前言 新一代HTTP/2 协议的主要目的是为了提高网页性能(有关HTTP/2的介绍,请见<从HTTP/0.9到HTTP/2:一文读 ...
- Android 视频播放器 (二):使用MediaPlayer播放视频
在 Android 视频播放器 (一):使用VideoView播放视频 我们讲了一下如何使用VideoView播放视频,了解了基本的播放器的一些知识和内容.也知道VideoView内部封装的就是Med ...
- 每天学点SpringCloud(五):如何使用高可用的Eureka
前几篇文章我们讲了一下Eureka的基础使用,但是呢有一个很重要的问题,我们讲的都是单机版的情况,如果这个时候Eureka服务挂了的话,那么我们的服务提供者跟服务消费者岂不是都废了?服务提供者和消费者 ...
- git添加远程仓库
3种方式 # 未创建项目目录git clone https://github.com/xxx/zzz.git [这里指定目标文件夹,不填写,默认创建 zzz目录] # 已存在项目文件,未设置远程仓库的 ...
- editormd实现文章详情页面预览
继之前博客写了editmd.js(国内开源的一款前端Markdown框架)实现的写文章功能之后,本博客介绍使用editormd实现文章预览功能,之前博客链接:https://blog.csdn.net ...
- 一个致命的 Redis 命令,导致公司损失 400 万!!
最近安全事故濒发啊,前几天发生了<顺丰高级运维工程师的删库事件>,今天又看到了 PHP 工程师在线执行了 Redis 危险命令导致某公司损失 400 万.. 什么样的 Redis 命令会有 ...
- spark面试总结3
Spark core面试篇03 1.Spark使用parquet文件存储格式能带来哪些好处? 1) 如果说HDFS 是大数据时代分布式文件系统首选标准,那么parquet则是整个大数据时代文件存储格式 ...