一、Mybatis概述
1.1简介
1.1.1 Mybatis介绍
MyBatis(官网:mybatis – MyBatis 3 | 简介https://mybatis.org/mybatis-3/zh_CN/index.html )是一款优秀的开源的 持久层 框架,用于简化JDBC的开发。是 Apache的一个开源项目iBatis,2010年这个项目由apache迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
1.1.2 特点
-
MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。
-
MyBatis封装了几乎所有的JDBC代码和参数的手工设置以及结果集的检索;
-
MyBatis使用简单的XML或注解做配置和定义映射关系,将Java的POJO(Plain Old Java Objects)映射成数据库中的记录。
持久层:指的是就是数据访问层(dao),是用来操作数据库的。
框架:是一个半成品软件,是一套可重用的、通用的、软件基础代码模型。在框架的基础上进行软件开发更加高效、规范、通用、可拓展。
1.2 Mybatis快速入门
1.2.1准备数据(数据库构建)
-- 创建数据库mybatis_db, 设置编码集 UTF8
create database if not exists mybatis_db character set utf8;
-- 切换到mybatis_db数据库
use mybatis_db;-- 创建学生信息表
create table `student`(
`id` int primary key auto_increment comment '学生ID,学生证ID',
`name` varchar(20) not null comment '学生名称',
`gender` char(1) not null comment '学生性别',
`age` int not null comment '学生年龄',
`address` varchar(50) not null comment '家庭地址'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='学生信息表';-- 插入数据
insert into student values
(1001,'刘备','m',40,'江南'),
(1002,'关羽','m',35,'上海'),
(1003,'虞姬','f',26,'北京'),
(1004,'赵云','m',27,'长春'),
(1005,'甄姬','f',26,'广州');select * from student;
1.2.2创建模块,导入坐标
<dependencies>
<!--mybatis的依赖-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<!--mysql 驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.31</version>
</dependency>
<!--junit 测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version><!--注意:下面语句( <scope>test</scope>)在测试后尽量删除,否则可能后续操作中部分功能失效-->
<scope>test</scope>
</dependency>
</dependencies>
1.2.3编写Mybatis核心配置文件
替换连接信息,解决硬编码问题 文件名:mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--连接信息-->
<property name="driver" value="com.mysql.cj.jdbc.Driver"/><!--红色那嘎达是你自己的数据库名-->
<property name="url" value="jdbc:mysql://localhost:3306/mybatis_db?useSSL=false&serverTimezone=Asia/Shanghai&useTimezone=true"/><!--密码和用户名也是用你自己的,别用我的啊!-->
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--配置相应的实体接口映射文件 resource属性里是文件的路径-->
<mapper resource="UserMapper.xml"/>
</mappers>
</configuration>
1.2.4编写sql映射文件
统一管理sql语句,解决硬编码问题 文件名:UserMapper.xml(针对于User类)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 属性 namespace:名称空间 建议:写相应实体接口的全名 -->
<mapper namespace="test">
<select id="findAll" resultType="com.shuilidianli.pojo.User">
select * from user;
</select>
</mapper>
1.2.5 编写核心代码
① 根据数据库表,定义pojo类
② 加载核心配置文件,获取SqlSessionFactory对象
③ 获取SqlSession对象,执行sql语句
④ 释放资源
public static void main(String[] args) throws IOException {
// 1. 加载mybatis的核心配置文件,获取SqlSessionFactory
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);//2. 获取SqlSession对象,用他来执行sql
SqlSession sqlSession = sqlSessionFactory.openSession();//3. 执行sql 调用selectList方法,传参 namespace.id,来指定要执行的sql语句
List<User> users = sqlSession.selectList("test.findAll");
System.out.println(users);//4. 释放资源
sqlSession.close();
}