【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应用,使得一套代码可以兼容不同的物理终端设备和浏览器,极大的提高了 ...
随机推荐
- k8s——istio
安装istio Istio / 入门 [root@master ~]# curl -L https://istio.io/downloadIstio | sh - % Total % Received ...
- 系统镜像烧写及U-Boot编译
1 系统镜像烧写 1.1 工具介绍 烧写软件:使用NXP的MfgTool2工具烧写,工具路径:[正点原子]阿尔法Linux开发板(A盘)-基础资料\05.开发工具\04.正点原子MFG_TOOL出厂固 ...
- ztree.js 禁止点击事件和鼠标禁用
先看样式 var _t = this; var setting = { view: { fontCss: { color: "#5E5F61" }, showIcon: true, ...
- ajax传参
// ajax传参 // ajax传参特点: // 1,不需要跳转 // 2,ajax传参,都是异步程序 // ...
- EF MYSQL 出现:输入字符串的格式不正确
实体类字段和数据库类型不一致. 比如:数据库是char类型字段,程序里声明为int.
- vue安装及升级
先装好note.js 安装过程很简单,一直点下一步就ok了.1.1我们通过打开命令行工具(win+R),输入node -v查看node的版本,若出现相应的版本号说明你安装成功了 1.2.npm包管理器 ...
- 在线Token、随机密码生成工具
在线生成自定义长度,包含大写或小写字母.数字或符号的随机字符串.无论你需要生成API访问令牌.账户激活令牌,还是随机密码字符串,它都能帮你快速完成. 在线Token.随机密码生成工具
- Math.ceil,Math.round,Math.floor区别
Math.ceil,Math.round,Math.floor区别 //向上取整 System.out.println("amt1=" + Math.ceil(71.01)); / ...
- 在Ubuntu系统安装Anaconda及Python
本文介绍在Linux Ubuntu操作系统的电脑中,安装Anaconda环境与Python语言的方法. 在之前的文章Anaconda与Python环境在Windows中的部署中,我们介绍了在W ...
- kylin-3.1.1-bin-hadoop3搭建,构建cube报的错误,Cannot modify dfs.replication at runtime. It is not in list of params that are allowed to be modified at runtime
主要是每次构建cube时会去读取kylin安装目录下的conf/kylin_hive_conf.xml文件, 副本是无法在hive查询时修改的,注释掉这两项 这个其实还有一些参数的控制: 添加这俩个参 ...