当前位置: 首页 > news >正文

MyBatis

一、MyBatis环境搭建

  1. 创建工程

启动idea开发工具,选择工具栏中的“file”--“new”--“project”选项弹出“new project”对话框,编辑项目名称 选择maven项目,项目路径 单击 create 创建即可。

  1. 引入相关依赖

 <dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.37</version></dependency></dependencies>
<!--    将项目中src/main/java目录下的XML等资源文件编译进classes文件夹--><build><resources><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources></build>
  1. 创建数据库

create  database  mybatis
  1. 创建数据库连接信息配置文件

在src/mian/resources目录下创建db.properties

mysql.driver=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3306/mybatis?useUnicode=true&;characterEncoding=utf8&;useSSL=false
mysql.username=root
mysql.password=123456
  1. 创建MyBatis的核心配置文件

在src/mian/resources目录下创建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>
<!--    环境配置-->
<!--    加载类路径下的属性文件--><properties resource="db.properties"></properties><environments default="development"><environment id="development"><transactionManager type="JDBC"/>
<!--       数据库连接相关配置,db.properties文件中的内容--><dataSource type="POOLED"><property name="driver" value="${mysql.driver}" /><property name="url" value="${mysql.url}" /><property name="username" value="${mysql.username}" /><property name="password" value="${mysql.password}" /></dataSource></environment></environments>
</configuration>

至此,MyBatis的开发环境搭建完成了。

二、MyBatis入门程序

  1. 数据库准备

USE mybatis;
CREATE TABLE users(
uid int PRIMARY KEY auto_increment,
uname VARCHAR(20) NOT NULL,
uage int not NULL
);INSERT  into users(uid,uname,uage) VALUES (null,'张三',20),(null,'李四',18);
  1. 创建POJO实体类

在项目中的src/main/java目录下创建com.itheima.pojo包,在com.itheima.pojo包下创建User类,该类用于封装User对象的属性,

package com.itheima.pojo;public class User {private int uid;      //用户idprivate String uname; //用户姓名private int uage;     //用户年龄public int getUid() {return uid;}public void setUid(int uid) {this.uid = uid;}public String getUname() {return uname;}public void setUname(String uname) {this.uname = uname;}public int getUage() {return uage;}public void setUage(int uage) {this.uage = uage;}
}
  1. 创建映射文件UserMapper.xml

<!--mapper为映射的根节点   namespace指定Dao接口的完整类名mybatis会根据这个接口动态创建一个实现类去实现这个接口,而这个实现类是一个Mapper对象-->
<mapper namespace="com.itheima.pojo.User"><select id="findById" parameterType="int" resultType="com.itheima.pojo.User">select * from users where uid = #{id};</select>
</mapper>
  1. 修改mybatis-config.xml配置文件

<!--mapping文件路径配置--><mappers><mapper resource="mapper/UserMapper.xml"></mapper></mappers>
  1. 编写测试类

在项目的src/test/java目录下创建Test包,在Test包下创建UserTest类,该类主要用于程序测试:

package test;import com.itheima.pojo.User;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;import java.io.IOException;
import java.io.Reader;public class UserTest {@Testpublic void userFindByIdTest(){String resources = "mybatis-config.xml";//创建流Reader reader = null;try {reader = Resources.getResourceAsReader(resources);} catch (IOException e) {throw new RuntimeException(e);}//初始化MyBatis数据库,创建SqlSessionFactory类的实例SqlSessionFactory sqlMapper = new SqlSessionFactoryBuilder().build(reader);//创建SqlSession实例SqlSession session = sqlMapper.openSession();//传入参数查询,返回结果User user = session.selectOne("findById", 2);//输出结果System.out.println(user.getUname());//关闭sqlSessionsession.close();}
}

三、MyBatis工作流程

上面中流程就是MyBatis内部核心流程,每一步流程的详细说明如下文所述:

(1)读取MyBatis的配置文件。mybatis-config.xml为MyBatis的全局配置文件,用于配置数据库连接信息。

(2)加载映射文件。映射文件即SQL映射文件,该文件中配置了操作数据库的SQL语句,需要在MyBatis配置文件mybatis-config.xml中加载。mybatis-config.xml 文件可以加载多个映射文件,每个文件对应数据库中的一张表。

(3)构造会话工厂。通过MyBatis的环境配置信息构建会话工厂SqlSessionFactory。

(4)创建会话对象。由会话工厂创建SqlSession对象,该对象中包含了执行SQL语句的所有方法。

(5)Executor执行器。MyBatis底层定义了一个Executor接口来操作数据库,它将根据SqlSession传递的参数动态地生成需要执行的SQL语句,同时负责查询缓存的维护。

(6)MappedStatement对象。在Executor接口的执行方法中有一个MappedStatement类型的参数,该参数是对映射信息的封装,用于存储要映射的SQL语句的id、参数等信息。

(7)输入参数映射。输入参数类型可以是Map、List等集合类型,也可以是基本数据类型和POJO类型。输入参数映射过程类似于JDBC对preparedStatement对象设置参数的过程。

(8)输出结果映射。输出结果类型可以是Map、List等集合类型,也可以是基本数据类型和POJO类型。输出结果映射过程类似于JDBC对结果集的解析过程。

http://www.lryc.cn/news/9849.html

相关文章:

  • 良好的作息表
  • 【郭东白架构课 模块一:生存法则】01|模块导学:是什么在影响架构活动的成败?
  • webshell免杀之函数与变量玩法
  • 【新解法】华为OD机试 - 去重求和 | 备考思路,刷题要点,答疑,od Base 提供
  • MySQL 服务正在启动.MySQL 服务无法启动.服务没有报告任何错误。请键入 NET HELPMSG 3534 以获得更多的帮助。总结较全 (已解决)
  • 【数据结构与算法】数组2:双指针法 二分法(螺旋矩阵)
  • librtmp优化
  • 数据结构与算法(二):线性表
  • IOS安全区域适配
  • 在Java 中 利用Milo通信库,实现OPCUA客户端,并生成证书
  • 三分钟学会用Vim
  • 编译链接实战(8)认识elf文件格式
  • 新手小白如何入门黑客技术?
  • 【java】Spring Boot --深入SpringBoot注解原理及使用
  • 一文掌握如何对项目进行诊断?【步骤方法和工具】
  • 系统分析师真题2020试卷相关概念二
  • <<Java开发环境配置>>5-MySQL安装教程(绿色版)
  • 空间复杂度与时间复杂度
  • javaEE 初阶 — 延迟应答与捎带应答
  • Twitter账号老被封?一文教会你怎么养号
  • 当遇到国外客户的问题,你解决不了的时候怎么办
  • 算法刷题打卡第93天: 最大的以 1 为边界的正方形
  • python语言基础(最详细版)
  • Java小技能:字符串
  • 2023美赛D题:可持续发展目标
  • openwrt开发板与ubuntu nfs挂载
  • 【Redis】Redis持久化之AOF详解(Redis专栏启动)
  • Git小乌龟每次推送拉取都弹窗和用户名密码报错(解决办法)
  • emacs 使用集锦
  • 蓝牙 - 如何实现安全性