【JavaEE进阶】MyBatis的创建及使用

这篇具有很好参考价值的文章主要介绍了【JavaEE进阶】MyBatis的创建及使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. MyBatis简介

MyBatis是一种开源的持久层框架,它可以与Java程序一起使用,用于简化数据库操作。MyBatis提供了一个简单且灵活的方式来将Java对象映射到关系型数据库中的数据表。

MyBatis的主要目标是通过将SQL查询与Java代码的解耦来简化数据库访问,并提供了丰富的映射功能和灵活的查询选项。使用MyBatis,可以将数据库操作定义为XML文件或注解的形式,然后根据需要执行这些操作。

总之,MyBatis是一个轻量级且功能强大的持久层框架,适用于需要灵活控制SQL和数据库访问的Java应用程序。它提供了一种简单且可定制的方式来进行数据库操作,使开发人员能够更容易地与数据库交互。
MyBatis官网

二. MyBatis 使用

MyBatis 的使用分为两部分,分别为:

  1. MyBatis开发环境的配置
  2. 使用MyBatis模式和语法操作数据库。

1. 数据库和数据表的创建

首先我们来创建一个数据库三张表(用户表,文章表,视频表):
将以下代码复制到MySQL5.7中:

-- 创建数据库
drop database if exists mycnblog;
create database mycnblog DEFAULT CHARACTER SET utf8mb4;

-- 使用数据数据
use mycnblog;

-- 创建表[用户表]
drop table if exists  userinfo;
create table userinfo(
    id int primary key auto_increment,
    username varchar(100) not null,
    password varchar(32) not null,
    photo varchar(500) default '',
    createtime timestamp default current_timestamp,
    updatetime timestamp default current_timestamp,
    `state` int default 1
) default charset 'utf8mb4';

-- 创建文章表
drop table if exists  articleinfo;
create table articleinfo(
    id int primary key auto_increment,
    title varchar(100) not null,
    content text not null,
    createtime timestamp default current_timestamp,
    updatetime timestamp default current_timestamp,
    uid int not null,
    rcount int not null default 1,
    `state` int default 1
)default charset 'utf8mb4';

-- 创建视频表
drop table if exists videoinfo;
create table videoinfo(
  	vid int primary key,
  	`title` varchar(250),
  	`url` varchar(1000),
		createtime timestamp default current_timestamp,
		updatetime timestamp default current_timestamp,
  	uid int
)default charset 'utf8mb4';

-- 添加一个用户信息
INSERT INTO `mycnblog`.`userinfo` (`id`, `username`, `password`, `photo`, `createtime`, `updatetime`, `state`) VALUES 
(1, 'admin', 'admin', '', '2021-12-06 17:10:48', '2021-12-06 17:10:48', 1);

-- 文章添加测试数据
insert into articleinfo(title,content,uid)
    values('Java','Java正文',1);
    
-- 添加视频
insert into videoinfo(vid,title,url,uid) values(1,'java title','http://www.baidu.com',1);

即为创建完毕.

2. 创建Mybatis项目

添加MyBatis框架支持分为两种情况,一种情况是对自己之前的 Spring 项目进行升级,另一种情况是创建一个全新的 MyBatisSpring Boot的项目.两者的区别是创建一个全新的 MyBatis项目时直接使用依赖(下面的演示为直接使用依赖),另一个方法是使用插件来引入依赖.(此处不做介绍)

2.1 添加MyBatis框架支持

【JavaEE进阶】MyBatis的创建及使用,JaveEE进阶,java-ee,mybatis,oracle
注意此处使用2.x.x版本的.
【JavaEE进阶】MyBatis的创建及使用,JaveEE进阶,java-ee,mybatis,oracle
【JavaEE进阶】MyBatis的创建及使用,JaveEE进阶,java-ee,mybatis,oracle
添加完依赖后,重新reload:
【JavaEE进阶】MyBatis的创建及使用,JaveEE进阶,java-ee,mybatis,oracle
然后删除不使用的文件:
【JavaEE进阶】MyBatis的创建及使用,JaveEE进阶,java-ee,mybatis,oracle

2.2 设置MyBatis配置信息

(1)设置数据库连接的相关信息
在配置文件中添加以下配置:

	spring:
	  datasource:
	    url: jdbc:mysql://127.0.0.1:3306/mycnblog?characterEncoding=utf8&useSSL=false
	    username: root
	    password: '0828'
	    driver-class-name: com.mysql.cj.jdbc.Driver

【JavaEE进阶】MyBatis的创建及使用,JaveEE进阶,java-ee,mybatis,oracle
注意说明:如果使用的mysql-connector-java5.x 版本之前,driver-class-name的参数值应设置为com.mysql.jdbc.Driver,如果版本大于5.xdriver-class-name的参数值应设置为com.mysql.cj.jdbc.Driver

(2)MyBatis xml保存路径和xml命名模式
设置MyBatis xml保存路径,xml 文件中保存是对数据库的具体操作SQL,配置如下:

		#设置MyBatis保存路径
		mybatis:
		  mapper-locations: classpath:mybatis/*Mapper.xml

(3)启动MyBatis项目:
在设置好MyBatis配置信息后,运行启动MyBatis项目,观察能否成功运行,如果项目成功运行,说明配置成功。
【JavaEE进阶】MyBatis的创建及使用,JaveEE进阶,java-ee,mybatis,oracle

3. MyBatis开发流程

(1)根据xml保存路径创建包
【JavaEE进阶】MyBatis的创建及使用,JaveEE进阶,java-ee,mybatis,oracle
(2)添加实体类对象
在 Java 目录下创建一个实体类包用来存放各种实体类,其中就包含UserEntity实体类。
【JavaEE进阶】MyBatis的创建及使用,JaveEE进阶,java-ee,mybatis,oracle

package com.example.demo.entity;

import lombok.Data;

import java.time.LocalDateTime;

@Data
public class UserEntity {
    private Integer id;
    private String username;
    private String password;
    private String photo;
    private LocalDateTime createtime;
    private LocalDateTime updatetime;
    private Integer state;
}

(3)数据库持久层UserMapper接口定义代码

package com.example.demo.mapper;

import com.example.demo.entity.UserEntity;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface UserMapper {
    List<UserEntity> getAll();
}

注意说明:创建好UserMapper类后立即在类上添加@Mapper注解,该注解源自org.apache.ibatis.annotations.Mapper
@Mapper注解是MyBatis框架中的一个注解,用于标识一个Java接口或抽象类作为数据访问对象(DAO)接口。
当我们在Java接口或抽象类上添加@Mapper注解时,MyBatis会根据接口定义生成对应的实现类。这样,我们就可以在应用程序中通过调用这些接口方法来执行数据库操作。
需要注意的是,使用@Mapper注解时,需要确保接口与对应的XML映射文件名一致,并且
同名的XML映射文件可以被正确加载和解析。

(4)添加 mybatis 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="">

</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 namespace="com.example.demo.mapper.UserMapper">
    <select id="getAll" resultType="com.example.demo.entity.UserEntity">
        select * from userinfo
    </select>
</mapper>

【JavaEE进阶】MyBatis的创建及使用,JaveEE进阶,java-ee,mybatis,oracle

  • namespace属性用于指定映射器接口的完全限定名,它是与此映射器文件相关联的映射器接口的唯一标识,形式为全包名.类名
  • id属性指定了语句的唯一标识符,与接口中定义的方法名称⼀样的,表示对接口的具体实现方法。
  • resultType属性指定了查询结果的类型。在这个例子中,查询结果的类型是com.example.mybatis.entity.UserEntity

综上所述,这个示例的目的是定义了一个名为getAll的查询语句,它将查询数据库中的userinfo表,并将结果映射为com.example.mybatis.entity.UserEntity类型的对象。

通过这个映射文件,可以让MyBatis框架自动生成相应的SQL查询代码,方便在 Java 程序中调用和使用。

【JavaEE进阶】MyBatis的创建及使用,JaveEE进阶,java-ee,mybatis,oracle
(5)添加 Service 服务层,示例具体实现代码如下:

package com.example.mybatis.service;
import com.example.mybatis.entity.UserEntity;
import com.example.mybatis.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;
    public List<UserEntity> getAll(){
        return userMapper.getAll();
    }
}

(6)添加 Controller 控制层,示例具体实现代码如下:

package com.example.demo.controller;

import com.example.demo.entity.UserEntity;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("getall")
    public List<UserEntity> getAll(){
        return userService.getAll();
    }
}

实现代码说明:在Controller类(控制层)中注入Service(服务层),并在Controller类中调用Service类中的具体方法。

4. MyBatis查询数据库测试

(1)数据库记录信息
【JavaEE进阶】MyBatis的创建及使用,JaveEE进阶,java-ee,mybatis,oracle
(2)浏览器地址栏输入
【JavaEE进阶】MyBatis的创建及使用,JaveEE进阶,java-ee,mybatis,oracleMyBatisX是一个第三方插件工具,可以在常见的Java开发IDE(如IntelliJ IDEA)中安装和使用。MyBatisX是一个用于增强MyBatis框架开发的插件工具,提供了XML语法支持、代码生成器、SQL编辑器、代码导航、代码重构和优化等功能,帮助开发者提升开发效率和代码质量。

MyBatisX插件的安装:
【JavaEE进阶】MyBatis的创建及使用,JaveEE进阶,java-ee,mybatis,oracle

三. MyBatis 流程

1. MyBatis 查询数据库流程

MyBatis 在进行查询数据库操作的执行流程主要为:

  1. 配置数据源:在MyBatis中,首先需要在配置文件中配置数据源,以便连接到数据库。通常是可以通过使用连接池或者直接配置数据库连接信息连接。
  2. 创建映射文件:MyBatis使用XML文件来定义数据库操作语句和映射关系。创建一个映射文件,它包含了数据库查询、插入、更新和删除等操作的语句,以及将结果映射到 Java对象的规则。
  3. 创建映射接口:为每个映射文件创建一个对应的 Java接口,接口中定义了与映射文件中相同的操作方法。
  4. 配置映射关系:在MyBatis的配置文件中,将映射文件和映射接口进行关联,指定它们的路径和命名空间。
  5. 注入Mapper接口:在需要使用查询功能的类中,通过依赖注入(比如@Autowired)方式注入Mapper接口的实例。
    Controller 类中注入Service 类对象,Service类中注入 Mapper 接口。
  6. 调用Mapper接口进行查询:通过注入的Mapper接口实例调用定义的查询方法,将参数传递给方法并执行查询操作。
    Controller 类(控制层)中调用 Service类(服务层),而Service类(服务层)中调用Mapper类接口(持久层)。
  7. 处理查询结果:根据查询的需求和Mapper接口方法的返回类型,对查询结果进行处理。可以返回单个对象、列表、映射结果等。
    查询结果从Mapper持久层中返回至Service,再从Service服务层中返回至Controller,最后再从Controller控制层返回至前端。

2. MyBatis 框架交互流程图

MyBatis 在整个框架中的定位,框架交互流程图:
【JavaEE进阶】MyBatis的创建及使用,JaveEE进阶,java-ee,mybatis,oracle
注意说明:MyBatis 是一个ORM框架,ORM (Object Relational Mapping),即对象关系映射。在面向对象编程语言中,将关系型数据库中的数据与对象建立起映射关系,进而自动的完成数据与对象的互相转换。

对象关系映射主要完成两步操作,分别为将输入数据(传入对象)+ SQL 映射成原生SQL以及将结果集映射为返回对象(输出对象)。文章来源地址https://www.toymoban.com/news/detail-656520.html

到了这里,关于【JavaEE进阶】MyBatis的创建及使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JavaEE进阶(Mybatis)5/30

    目录 1.单元测试 2.生成单元测试 3.Mybatis 插入操作 4.#{}和${}的区别 1.单元测试 优点 ,1.可以检查方法的正确性 2.可以,在打包前检查程序的错误,减少错误 3.不污染数据库 2.生成单元测试 1.要生成的类内部generate  2.添加单元测试的代码         2.1在新生成的单元测试代码上

    2024年02月08日
    浏览(34)
  • 【JavaEE进阶】MyBatis表查询

    在上一篇博客中我们简单了解了MyBatis的创建与使用,接下来我们进一步的学习MyBatis的相关知识。 注:此博客中测试案例所使用的单元测试在文末有教程. 我们在JDBC中在构造sql语句的时候,常常给字段的值用问号 ? 代替,最后在使用方法对这些 ? 进行赋值,这是 预编译 。 使用

    2024年02月11日
    浏览(31)
  • JavaEE进阶(Mybatis)5/31

    目录 1. SQL注入 2.concat()用于like模糊查询 3.resultMap 4. 5.动态SQL 6.foreach标签 1. SQL注入 $问题会导致SQL注入         因为$是直接替换的,and的优先级高于or true or false #不存在SQL注入的问题,因为他是预编译的,他先把#{ }的内容替换为?占位符然后把这个占位符替换掉,MySQL认

    2024年02月07日
    浏览(32)
  • 【JavaEE基础学习打卡03】Java EE 平台有哪些内容?

    📜 本系列教程适用于Java Web初学者、爱好者,小白白。我们的天赋并不高,可贵在努力,坚持不放弃。坚信量最终引发质变,厚积薄发。 🚀 文中白话居多,尽量以小白视角呈现,帮助大家快速入门。 🎅 我是 蜗牛老师 ,之前网名是 Ongoing蜗牛 ,人如其名,干啥都慢,所以

    2024年02月12日
    浏览(47)
  • 【JavaEE基础学习打卡02】是时候了解Java EE了!

    📜 本系列教程适用于 Java Web 初学者、爱好者,小白白。我们的天赋并不高,可贵在努力,坚持不放弃。坚信量最终引发质变,厚积薄发。 🚀 文中白话居多,尽量以小白视角呈现,帮助大家快速入门。 🎅 我是 蜗牛老师 ,之前网名是 Ongoing蜗牛 ,人如其名,干啥都慢,所

    2024年02月12日
    浏览(48)
  • 【JavaEE进阶】SpringBoot项目的创建

    Spring Boot 是一个用于快速构建基于 Spring 框架的应用程序的开源框架 .它简化了 Spring 应用程序的配置和部署过程,使开发者能够更专注于业务逻辑的实现。 Spring Boot 提供了许多开箱即用的功能,包括: 自动配置:Spring Boot 根据应用程序的依赖关系自动配置各种组件,无需手

    2024年02月13日
    浏览(74)
  • 【JavaEE进阶】 Spring 的创建和使⽤

    Spring 是⼀个包含了众多⼯具⽅法的 IoC 容器,它具备以下两个最基本的功能: 将对象存储到容器(Spring)中; 从容器中将对象取出来。 在 Java 语⾔中对象也叫做 Bean,所以下文中提到的对象我们以 Bean 著称 接下来使⽤ Maven ⽅式来创建⼀个 Spring 项⽬,创建 Spring 项⽬和 Ser

    2024年02月05日
    浏览(39)
  • Java EE 突击 13 - MyBatis 查询数据库(2)

    这个专栏给大家介绍一下 Java 家族的核心产品 - SSM 框架 JavaEE 进阶专栏 Java 语言能走到现在 , 仍然屹立不衰的原因 , 有一部分就是因为 SSM 框架的存在 接下来 , 博主会带大家了解一下 Spring、Spring Boot、Spring MVC、MyBatis 相关知识点 并且带领大家进行环境的配置 , 让大家真正用好

    2024年02月11日
    浏览(51)
  • [JAVA EE]创建Servlet——实现Servlet接口笔记1

    创建Servlet的方式之一:实现servlet接口 servlet的生命周期: 1、实例化:创建servlet实例对象 2、初始化:调用init方法完成初始化工作 3、服务:调用service方法来处理用户请求 4、销毁:调用destroy方法来释放占用的内存资源 通过service方法处理用户的请求: 通过request(servletReque

    2024年02月03日
    浏览(47)
  • [JAVA EE ]创建Servlet——继承HttpServlet类笔记3

    Response 一、响应行 组成:协议/版本 响应状态码 状态码描述 响应状态码:服务器告诉客户端浏览器本次请求响应的一个状态,都是三位数 1xx:服务器接收客户端消息,但是没有接收完成,等待一段时间后,发送1xx状态码 2xx:成功,200 3xx:重定向。302重定向,304访问缓存

    2024年02月03日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包