Mybatis概述
Mybatis概念
- MyBatis 是一款优秀的持久层框架,用于简化 JDBC 开发
- MyBatis 本是 Apache 的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github
- 官网:https://mybatis.org/mybatis-3/zh/index.html
- 负责将数据到保存到数据库的那一层代码。 以后开发我们会将操作数据库的Java代码作为持久层。而Mybatis就是对jdbc代码进行了封装。
- JavaEE三层架构:表现层、业务层、持久层。
- 框架就是一个半成品软件,是一套可重用的、通用的、软件基础代码模型
- 在框架的基础之上构建软件编写更加高效、规范、通用、可扩展
JDBC 缺点
- 注册驱动、获取连接
- SQL语句
- 手动设置参数
- 手动封装结果集
Mybatis 优化
- 硬编码可以配置到配置文件
- 操作繁琐的地方mybatis都自动完成
Mybatis快速入门
需求:查询user表中所有的数据
- 创建user表,添加数据
create database mybatis;use mybatis;drop table if exists tb_user;create table tb_user (id int primary key auto_increment ,username varchar ( 20 ) ,password varchar ( 20 ) ,gender char ( 1 ) ,addr varchar ( 30 )) ;INSERT INTO tb_user VALUES ( 1 , 'zhangsan' , '123' , ' 男 ' , ' 北京 ' ) ;INSERT INTO tb_user VALUES ( 2 , ' 李四 ' , '234' , ' 女 ' , ' 天津 ' ) ;INSERT INTO tb_user VALUES ( 3 , ' 王五 ' , '11' , ' 男 ' , ' 西安 ' ) ;
- 创建模块,导入坐标
在创建好的模块中的 pom.xml 配置文件中添加依赖的坐标
<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> 5.1.46 </version></dependency><!--junit 单元测试 --><dependency><groupId> junit </groupId><artifactId> junit </artifactId><version> 4.13 </version><scope> test </scope></dependency><!-- 添加 slf4j 日志 api --><dependency><groupId> org.slf4j </groupId><artifactId> slf4j-api </artifactId><version> 1.7.20 </version></dependency><!-- 添加 logback-classic 依赖 --><dependency><groupId> ch.qos.logback </groupId><artifactId> logback-classic </artifactId><version> 1.2.3 </version></dependency><!-- 添加 logback-core 依赖 --><dependency><groupId> ch.qos.logback </groupId><artifactId> logback-core </artifactId><version> 1.2.3 </version></dependency></dependencies>
注意:需要在项目的 resources 目录下创建logback的配置文件
- 编写 MyBatis 核心配置文件 -- > 替换连接信息 解决硬编码问题
在模块下的 resources 目录下创建mybatis的配置文件 mybatis-config.xml ,内容如下:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><typeAliases><package name = "com.itheima.pojo" /></typeAliases><!--environments :配置数据库连接环境信息。可以配置多个 environment ,通过 default 属性切换不同的environment--><environments default = "development" ><environment id = "development" ><transactionManager type = "JDBC" /><dataSource type = "POOLED" ><!-- 数据库连接信息 --><property name = "driver" value = "com.mysql.jdbc.Driver" /><property name = "url" value = "jdbc:mysql:///mybatis?useSSL=false" /><property name = "username" value = "root" /><property name = "password" value = "1234" /></dataSource></environment><environment id = "test" ><transactionManager type = "JDBC" /><dataSource type = "POOLED" ><!-- 数据库连接信息 --><property name = "driver" value = "com.mysql.jdbc.Driver" /><property name = "url" value = "jdbc:mysql:///mybatis?useSSL=false" /><property name = "username" value = "root" /><property name = "password" value = "1234" /></dataSource></environment></environments><mappers><!-- 加载 sql 映射文件 --><mapper resource = "UserMapper.xml" /></mappers></configuration>
- 编写 SQL 映射文件 --> 统一管理sql语句,解决硬编码问题
在模块的 resources 目录下创建映射配置文件 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 namespace = "test" ><select id = "selectAll" resultType = "com.itheima.pojo.User" >select * from tb_user;</select></mapper>
在 com.itheima.pojo 包下创建 User类
public class User {
private int id ;private String username ;private String password ;private String gender ;private String addr ;// 省略了 setter 和 getter}
在 com.itheima 包下编写 MybatisDemo 测试类
public class MyBatisDemo {
public static void main ( String [] args ) throws IOException {//1. 加载 mybatis 的核心配置文件,获取 SqlSessionFactoryString resource = "mybatis-config.xml" ;InputStream inputStream = Resources . getResourceAsStream ( resource );SqlSessionFactory sqlSessionFactory = newSqlSessionFactoryBuilder (). build ( inputStream );//2. 获取 SqlSession 对象,用它来执行 sqlSqlSession sqlSession = sqlSessionFactory . openSession ();//3. 执行 sqlList < User > users = sqlSession . selectList ( "test.selectAll" ); // 参数是一个字符串,该字符串必须是映射配置文件的 namespace.idSystem . out . println ( users );//4. 释放资源sqlSession . close ();}}
解决SQL映射文件的警告提示:
- 产生的原因:Idea和数据库没有建立连接,不识别表信息。但是大家一定要记住,它并不影响程序的执行。
- 解决方式:在Idea中配置MySQL数据库连接
IDEA中配置MySQL数据库连接
- 点击IDEA右边框的 Database ,在展开的界面点击 + 选择 Data Source ,再选择 MySQL
- 在弹出的界面进行基本信息的填写
- 点击完成后就能看到如下界面
而此界面就和 navicat 工具一样可以进行数据库的操作。也可以编写SQL语句