【Mybatis】01 概述 & 快速入门Part1
什么是 MyBatis?
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。
MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
MyBatis 可以通过简单的 XML 或注解来
配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
官方文档地址:
https://mybatis.org/mybatis-3/zh/index.html
环境所需的组成部分
MySQL 5.0 +
JDK 1.8 +
IDEA 2018 +
Maven 3.0 +
总而言之:越新越好
快速入门 Quickstart:
用IDEA创建一个使用Maven构建的Mybatis学习工程

填好工程名称

为了解释多个要点,我们把主工程的目录删除,建立多模块结构

右键工程,新建

填写模块名称

新建的项目不会自动分配约定目录,这里我们需要手动设置

打开ProjectStructure

蓝色表示我们的源码目录
绿色表示我们的测试目录
带有黄色堆叠块的目录表示是资源存放目录
根据第一次新建工程的目录结构来看
我们只需要把java目录 和 test的Java目录更改即可
点选目录 再点选所要约定的目录种类即可

这是另一种实现的方式

依赖导入 Dependency Import
因为我们使用的是父子多模块模式
依赖直接导入在父Pom下即可
(Mybatis)pom.xml
<dependencies>
<!-- Mybatis 组件 -->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.4</version>
</dependency> <!-- JDBC 驱动-->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.20</version>
</dependency> <!-- lombok -->
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.12</version>
<scope>provided</scope>
</dependency> <!-- Junit 单元测试 -->
<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
<scope>test</scope>
</dependency> </dependencies>
创建数据库,制作模拟数据
From SQLyog

或者SQL指令
DROP DATABASE IF EXISTS myabtis;
CREATE DATABASE IF NOT EXISTS mybatis;
创建user表

或者SQL指令
CREATE TABLE user(
id int(20) primary key,
name varchar(30) default null,
password varchar default null
)engine=innodb default charset=utf8;
插入数据
INSERT INTO user(`user_id`,`user_name`,`user_password`) values
(1,"张三","123456"),
(2,"李四","234567"),
(3,"王五","345678"),
(4,"钱六","456789");
创建Mybatis核心配置文件
配置信息获取位置:https://mybatis.org/mybatis-3/zh/getting-started.html
XML 配置文件中包含了对 MyBatis 系统的核心设置,
包括获取数据库连接实例的数据源(DataSource)
以及决定事务作用域和控制方式的事务管理器(TransactionManager)。
后面会再探讨 XML 配置文件的详细内容,这里先给出一个简单的示例:
src\main\resources\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>
<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="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
当然,还有很多可以在 XML 文件中配置的选项,上面的示例仅罗列了最关键的部分。
注意 XML 头部的声明,它用来验证 XML 文档的正确性。
environment 元素体中包含了事务管理和连接池的配置。
mappers 元素则包含了一组映射器(mapper),
这些映射器的 XML 映射文件包含了 SQL 代码和映射定义信息。
对配置信息的注释解释:
<?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多环境配置 default="development"表示默认使用的1个环境 -->
<environments default="development"> <!-- default 环境 -->
<environment id="development"> <!-- 事务管理 默认使用JDBC -->
<transactionManager type="JDBC"/> <!-- 数据源 ,也就是我们所学的连接池技术 -->
<dataSource type="POOLED"> <!-- 不用我说是了把,老4样了 --> <!-- 这是jdbc8.0+ 的版本驱动,老版本5.0+ 是com.mysql.jdbc.Driver -->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/> <!-- 本机连接可以不用写 localhost:3306 -->
<!-- 8.0+的驱动访问数据库必须声明时区参数 ,5.0+不需要 直接就是 jdbc:mysql:///mybatis -->
<!-- 时区还可以设置为 -->
<!-- jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8&useSSL=true&serverTimezone=GMT&useUnicode=true -->
<property name="url" value="jdbc:mysql:///mybatis?serverTimezone=GMT"/> <!-- 用户&密码 -->
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment> <!-- 我们复制粘贴,可以使用第二套环境 -->
<environment id="development2">
<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> <!-- 我们需要绑定的Dao,按Mybatis的话来说,就是Mapper映射器 -->
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers> </configuration>
我们可以使用IDEA先连接数据库
数据库的使用
https://www.cnblogs.com/mindzone/p/12718287.html

确认可用之后,开始编写MybatisUtil工具类
从 XML 中构建 SqlSessionFactory
每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。
SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。
而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。
从 XML 文件中构建 SqlSessionFactory 的实例非常简单,
建议使用类路径下的资源文件进行配置。
但也可以使用任意的输入流(InputStream)实例,
比如用文件路径字符串或 file:// URL 构造的输入流。
MyBatis 包含一个名叫 Resources 的工具类,
它包含一些实用方法,使得从类路径或其它位置加载资源文件更加容易。
String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
src\main\java\cn\dai\util\MybatisUtil.java
public class MybatisUtil {
private static org.apache.ibatis.session.SqlSessionFactory sqlSessionFactory;
static {
try{
// 核心配置文件名称
String config = "mybatis-config.xml";
// 读取核心配置 加载进内存为读取流对象
java.io.InputStream inputStream = org.apache.ibatis.io.Resources.getResourceAsStream(config);
// 通过工场建造者获取了配置流对象,读取配置信息后,生成会话工厂实例
sqlSessionFactory = new org.apache.ibatis.session.SqlSessionFactoryBuilder().build(inputStream);
} catch (Exception exception){
exception.printStackTrace();
}
}
// 获取会话实例即可
public static org.apache.ibatis.session.SqlSession getSqlSession(){
return sqlSessionFactory.openSession();
}
}
编写对应的实体类,用lombok省略相关方法
src\main\java\cn\dai\pojo\User.java
package cn.dai.pojo; import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor; /**
* @author ArkD42
* @file Mybatis
* @create 2020 - 05 - 03 - 15:58
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
// 最好和数据表的字段同名
private Integer user_id;
private String user_name;
private String user_password;
}
声明我们的DAO接口,应该说映射接口
只写一个方法即可
src\main\java\cn\dai\mapper\UserMapper.java
package cn.dai.mapper; import cn.dai.pojo.User; import java.util.List; /**
* @author ArkD42
* @file Mybatis
* @create 2020 - 05 - 03 - 16:00
*/
public interface UserMapper {
List<User> getUserList();
}
从最经典的XML配置开始,这里我们不再写实现类了,
而是写Mapper接口的配置文件
src\main\java\cn\dai\mapper\UserMapper.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接口名称-->
<mapper namespace="cn.dai.mapper.UserMapper"> <!-- 我们的SQL语句使用这种标签来实现 -->
<!-- id 是我们的Mapper接口中的 方法名称 -->
<!-- resultType 表示查询的结果类型,因为是List 这里我们直接填写泛型的元素类型就好了 -->
<select id="getUserList" resultType="cn.dai.pojo.User">
/* 这里填写我们的SQL语句 */
SELECT * FROM `user`;
</select>
</mapper>
回到mybatis-conifg.xml 核心配置文件,注册我们的映射器文件
<!-- 所有的映射器都需要被注册到!!!-->
<!-- 我们需要绑定的Dao,按Mybatis的话来说,就是Mapper映射器 -->
<mappers>
<mapper resource="cn/dai/mapper/UserMapper.xml"/>
</mappers>
测试类
src\test\java\Quickstart.java
import cn.dai.mapper.UserMapper;
import cn.dai.pojo.User;
import cn.dai.util.MybatisUtil;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test; import java.util.List; /**
* @author ArkD42
* @file Mybatis
* @create 2020 - 05 - 03 - 16:10
*/
public class Quickstart { @Test
public void quickstartMybatis(){ // 获取会话对象
SqlSession sqlSession = MybatisUtil.getSqlSession(); // 获得映射实现实例
UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 调用接口方法
List<User> userList = mapper.getUserList(); for (User user : userList) {
System.out.println(user);
} // 释放资源
sqlSession.close();
}
}
结果:

常见的错误总结:
1、Maven依赖问题
这个可能是IDEA版本问题,建议直接下载最新IDEA版本使用
2017、2018、都可能会出现,然后是Maven版本不一样的问题,建议最新
2、核心配置文件的问题
如果在配置中不小心写错了标签,尽管IDEA会自动提示,
但是你刚刚上手,根本不会注意这个问题,异常提示会给出准确的错误行,只要修改即可

3、映射器未注册异常
配置完接口的Mapper就开始跑了,你在想屁吃?

4、资源过滤问题
刚写这篇快速入门都没有这个错误,
早上起来测试修改的工具类发生的报错
一看是UserMapper.xml找不到,然后我们可以去看看产出的实际类目录有没有
如果没有就说明Maven把配置文件过滤了,那就要设置Maven的build目录过滤了

在父pom.xml中设置此配置即可
两个过滤标签都设置false让UserMapper.xml可以设置中文注释,否则报错不允许
<!--在build中配置resources,来防止我们资源导出失败的问题-->
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource> <resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
时区设置的补充
<!-- 时区还可以设置为 serverTimezone=Asia/Shanghai serverTimezone=GMT -->
【Mybatis】01 概述 & 快速入门Part1的更多相关文章
- Mybatis框架 的快速入门
MyBatis 简介 什么是 MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架.MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置以及结果 ...
- MyBatis 框架之快速入门程序
一.使用 IDEA 快速创建 Maven 项目 关于如何快速创建 Maven 项目,这个可以参考下面这篇文章: Maven 项目管理工具基础入门系列(一) 二.快速配置 MyBatis 依赖 jar ...
- 01.Hibernate快速入门
第一步:下载Hibernate5的运行环境 https://sourceforge.net/projects/hibernate/files/hibernate-orm/ 第二步:在数据库创建表 Cr ...
- MyBatis 01 概述
官网 http://www.mybatis.org/mybatis-3/zh/index.html GitHub https://github.com/mybatis/mybatis-3 简介 MyB ...
- 01 HTML快速入门
HTML CSS JS (网络三剑客) 上网就是下载网页 浏览器 就是一个解释器 CS模式--------client serverbs模式--------browser server HTML是什么 ...
- 01.SpringMVC快速入门
1.导入jar包 2.在web.xml中配置前端控制器 <!-- spring前端控制器 --> <servlet> <servlet-name>springmvc ...
- 快速入门系列--MVC--01概述
虽然使用MVC已经不少年,相关技术的学习进行了多次,但是很多技术思路的理解其实都不够深入.其实就在MVC框架中有很多设计模式和设计思路的体现,例如DependencyResolver类就包含我们常见的 ...
- 持久层之 MyBatis: 第一篇:快速入门
MyBatis入门到精通 JDBC回顾 1.1.认识MyBatis 1.1.使用IDEA创建maven工程 1.2.引入mysql依赖包 1.3.准备数据 1.4 使用JDBC手写MyBatis框架 ...
- 快速入门系列--MVC--02路由
现在补上URL路由的学习,至于蒋老师自建的MVC小引擎和相关案例就放在论文提交后再实践咯.通过ASP.NET的路由系统,可以完成请求URL与物理文件的分离,其优点是:灵活性.可读性.SEO优化.接下来 ...
- 快速入门系列--MVC--07与HTML5移动开发的结合
现在移动互联网的盛行,跨平台并兼容不同设备的HTML5越来越盛行,很多公司都在将自己过去的非HTML5网站应用渐进式的转化为HTML5应用,使得一套代码可以兼容不同的物理终端设备和浏览器,极大的提高了 ...
随机推荐
- bash: _get_comp_words_by_ref: command not found 报错
没有安装补全的包 错误信息 bash: _get_comp_words_by_ref: command not found 表明你的 shell 中可能存在补全功能的问题. 通常,这种错误发生在你的系 ...
- 【AI应用开发全流程】使用AscendCL开发板完成模型推理
本文分享自华为云社区<[昇腾开发全流程]AscendCL开发板模型推理>,作者:沉迷sk. 前言 学会如何安装配置华为云ModelArts.开发板Atlas 200I DK A2.并打通一 ...
- 一文教你在MindSpore中实现A2C算法训练
本文分享自华为云社区<MindSpore A2C 强化学习>,作者:irrational. Advantage Actor-Critic (A2C)算法是一个强化学习算法,它结合了策略梯度 ...
- vue侦听器 - watch
使用watch来侦听data中数据的变化,watch中的属性一定是data 中已经存在的数据. 当需要监听一个对象的改变时,普通的watch方法无法监听到对象内部属性的改变,只有data中的数据才能够 ...
- String Record
T1. P5840 算法:ACAM+BIT+树链剖分 自然地,我们会对 \(s_i\) 建 ACAM,然后建出一颗 fail 树. 此时我们考虑集合内加入一个新的字符串.每一个匹配到的点我们都会给从这 ...
- koishi-跨平台、可扩展、高性能的机器人
koishi 介绍 Koishi 是一个跨平台.可扩展.高性能的聊天机器人框架. 它的名字和图标设计来源于东方 Project 中的角色 古明地恋 (Komeiji Koishi).古明地恋是一个会做 ...
- mybatis Selective动态判断属性值新增或修改操作,batch批量操作
mybatis Selective动态判断属性值新增或修改操作,batch批量操作 mybatis insert foreach批量添加https://www.cnblogs.com/oktokeep ...
- Kotlin 数据类型详解:数字、字符、布尔值与类型转换指南
Kotlin 数据类型 在 Kotlin 中,变量的类型由其值决定: 示例 val myNum = 5 // Int val myDoubleNum = 5.99 // Double val myLe ...
- Kubernetes(五) Pod控制器详解
Pod控制器详解 本章主要介绍Pod控制器的详细使用 1. Pod控制器介绍 在kubernetes中,按照pod的创建方式可以将其分为2类: 自主式pod:kubernetes直接创建出来的pod, ...
- ARM+DSP!全志T113-i+玄铁HiFi4开发板硬件说明书(1)
前 言 本文档主要介绍开发板硬件接口资源以及设计注意事项等内容,测试板卡为全志T113-i+玄铁HiFi4开发板.由于篇幅问题,本篇文章共分为上下两集,点击账户可查看更多内容详情,开发问题欢迎留言,感 ...