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&amp;
serverTimezone=GMT%2B8&amp;useUnicode=true&amp;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入门实例的更多相关文章

  1. Mybatis入门实例解析

    写在前面:本文全程根据Mybatis官网进行入门讲解.毫无疑问,官方文档是学习这门技术最权威的资料,与此同时我们也知道官方文档对待入门小白基本上不太友好,没有入门demo.开篇就是小白们不懂的内容.有 ...

  2. 2.mybatis入门实例 连接数据库进行查询

    1.新建项目,添加mybatis和mysql的jar包 2.在mysql中新建表user[id,name,age] CREATE TABLE `users` ( `id` ) NOT NULL aut ...

  3. MyBatis入门实例-包括实体类与数据库字段对应&CLOB字段处理

    1.我的开发环境是 jdk1.7+ecplise+oracle 11g 用到的jar包:mybatis-3.1.1.jar ojdbc6.jar 2.项目整体结构     3.首先配置conf.xml ...

  4. MyBatis入门实例 ——Mapper.xml(zz)

    <?xml version="1.0" encoding="UTF-8" ?>    <!DOCTYPE mapper        PUBL ...

  5. mybatis入门案例分析

    mybatis入门案例分析 一.设计模式分析 public class MybatisTest { public static void main(String[] args) throws Exce ...

  6. mybatis 详解(二)------入门实例(基于XML)

    通过上一小节,mybatis 和 jdbc 的区别:http://www.cnblogs.com/ysocean/p/7271600.html,我们对 mybatis有了一个大致的了解,下面我们通过一 ...

  7. mybatis 详解(三)------入门实例(基于注解)

    1.创建MySQL数据库:mybatisDemo和表:user 详情参考:mybatis 详解(二)------入门实例(基于XML) 一致 2.建立一个Java工程,并导入相应的jar包,具体目录如 ...

  8. 1. mybatis 的入门实例

    mybatis 的入门实例 1.创建一个普通的Java项目 1.加入jar包(所有mybatis 和mysql) 2.加入配置文件 src 目录下 (1) db.properties mysql.us ...

  9. mybatis学习一:基于xml与注解配置入门实例与问题

    注:本case参考自:http://www.cnblogs.com/ysocean/p/7277545.html 一:Mybatis的介绍: MyBatis 本是apache的一个开源项目iBatis ...

随机推荐

  1. Linux pwn入门教程(10)——针对函数重定位流程的几种攻击

    作者:Tangerine@SAINTSEC 本系列的最后一篇 感谢各位看客的支持 感谢原作者的付出一直以来都有读者向笔者咨询教程系列问题,奈何该系列并非笔者所写[笔者仅为代发]且笔者功底薄弱,故无法解 ...

  2. Java核心技术卷一基础知识-第5章-继承-读书笔记

    第5章 继承 本章内容: * 类.超类和子类 * Object:所有类的超类 * 泛型数组列表 * 对象包装器和自动装箱 * 参数数量可变的方法 * 枚举类 * 反射 * 继承设计的技巧 利用继承,人 ...

  3. Java工程师必备

    Java工程师必备 JAVA基础扎实,熟悉JVM,熟悉网络.多线程.分布式编程及性能调优 精通Java EE相关技术 熟练运用Spring/SpringBoot/MyBatis等基础框架 熟悉分布式系 ...

  4. 请求被中止: 未能创建 SSL/TLS 安全通道

    出现“请求被中止: 未能创建 SSL/TLS 安全通道.”的问题. 在创建请求地址的前面加了这句代码就可以了 System.Net.ServicePointManager.SecurityProtoc ...

  5. 2,linux入门到上手-ssh安装配置及虚拟机基本使用

    ssh配置 1,打开"终端窗口",输入 "sudo apt-get update" --> 回车 --> "输入当前登录用户的管理员密码& ...

  6. 搭建gitlab本地服务

    一本正经的搞事情 改变懒惰,成就心中的自己,并非难事 博客园 首页 新随笔 联系 管理 订阅 随笔- 40  文章- 0  评论- 5  gitlab服务部署及使用   目录 一.什么是gitlib ...

  7. C++版 - 剑指offer 面试题22:栈的压入、弹出序列 题解

    剑指offer 面试题22:栈的压入.弹出序列 提交网址: http://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106?tpId ...

  8. Supervisor使用教程

    在项目中,经常有脚本需要常驻运行的需求.以PHP脚本为例,最简单的方式是: $ nohup php cli.php & 这样能保证当前终端被关闭或者按CRTL+C后,脚本仍在后台运行.但是没法 ...

  9. eclipse连接github,链接不上 cannot open git-upload-pack(git-receive-pack)

    2018年2月8日后禁止通过TLSv1.1协议连接https://github.com 和 https://api.github.com. 原文地址为https://githubengineering ...

  10. Mybatis学习(三)————— 映射文件详解

    前面说了全局配置文件中内容的详解,大家应该清楚了,现在来说说这映射文件,这章就对输入映射.输出映射.动态sql这几个知识点进行说明,其中高级映射(一对一,一对多,多对多映射)在下一章进行说明. 一.输 ...