深入浅出:MyBatis的使用方法及最佳实践

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

添加MyBatis框架⽀持

创建⼀个全新的 MyBatis 和 Spring Boot 的项⽬时添加引⽤
如下:
深入浅出:MyBatis的使用方法及最佳实践,JavaEE,mybatis,后端,学习,java-ee,spring

配置连接字符串和MyBatis

配置连接字符串

在application.properties中添加如下内容:

spring.datasource.url=jdbc:mysql://localhost:3306/demo?characterEncoding=utf8&useSSL=false
spring.datasource.username=root
spring.datasource.password=666666
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

配置 MyBatis 中的 XML 路径

依旧在application.properties中添加如下内容:

mybatis.mapper-locations=classpath:mapper/*Mapper.xml
# 配置mybatis xml 的⽂件路径,在 resources/mapper 创建所有表的 xml ⽂件

深入浅出:MyBatis的使用方法及最佳实践,JavaEE,mybatis,后端,学习,java-ee,spring

添加业务代码

按照后端开发思路,进行mybatis查询用户的功能,流程图如下:
深入浅出:MyBatis的使用方法及最佳实践,JavaEE,mybatis,后端,学习,java-ee,spring

创建数据库和表

创建demo数据库

drop database if exists demo;
create database demo default character set utf8mb4;

使用数据库

use demo;

创建学生表

drop table if exists stu;
create  table stu(
    id int primary key auto_increment,
    name varchar(100) not null ,
    sex  varchar(10) not null

) default charset 'utf8mb4';

添加学生信息

insert into  demo.stu(id,name,sex) values (1,'zcx','男');

添加用户实体类

import lombok.Data;
@Data
public class User {
    private Integer id;
    private String name;
    private String sex;
}

添加 mapper 接⼝

import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface UserMapper {
public List<User> getAll();
}

添加 UserMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybati
s.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mybatisdemo.dao.UserMapper">
   
</mapper>
  • Mapper 标签:需要指定 namespace 属性,表示命名空间,需要写的是 Mapper 接口的全限定名(包括包路径)。namespace 的作用是指定该 Mapper XML 文件对应的 Mapper 接口,建立起二者之间的映射关系。
    深入浅出:MyBatis的使用方法及最佳实践,JavaEE,mybatis,后端,学习,java-ee,spring
    后续可在Mapper 标签中书写sql操作标签
    例如:
    添加查询操作
 <select id="getAll">
        select * from stu
    </select>

添加 Service层

import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class UserService {
    @Resource
    private UserMapper userMapper;
    public List<User> getAll() {
        return userMapper.getAll();
    }

}

添加 Controller层

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.List;
@RestController
@RequestMapping("/u")
public class UserController {
    @Resource
    private UserService userService;
    @RequestMapping("/getall")
    public List<User> getAll(){
        return userService.getAll();
    }
}

使用浏览器进行查询访问
深入浅出:MyBatis的使用方法及最佳实践,JavaEE,mybatis,后端,学习,java-ee,spring

增删改操作

对⽤户的增加、删除和修改的操作,对应使⽤ MyBatis 的标签如下:

  • <insert>标签:插⼊语句
  • <update> 标签:修改语句
  • <delete>标签:删除语句

增加操作

controller 实现代码:

 @RequestMapping(value = "/add",method = RequestMethod.POST)
    public Integer add(@RequestBody User user){
        return userService.add(user);
    }

Service 实现代码:

  public Integer add(User user ){
        return userMapper.add(user);
    }

mapper interface:

Integer add(User user);

mapper.xml:

<insert id="add" >
        insert into stu(name,sex)
        values(#{name},#{sex})
    </insert>

使用Postman 添加访问:
深入浅出:MyBatis的使用方法及最佳实践,JavaEE,mybatis,后端,学习,java-ee,spring
也可返回自增主键,修改如下代码:

 @RequestMapping(value = "/add",method = RequestMethod.POST)
    public Integer add(@RequestBody User user){
        userService.add(user);
        return user.getId();
    }
<insert id="add" useGeneratedKeys="true" keyProperty="id">
        insert into stu(name,sex)
        values(#{name},#{sex})
    </insert>

深入浅出:MyBatis的使用方法及最佳实践,JavaEE,mybatis,后端,学习,java-ee,spring
深入浅出:MyBatis的使用方法及最佳实践,JavaEE,mybatis,后端,学习,java-ee,spring

  • useGeneratedKeys:这会令 MyBatis 使⽤ JDBC 的 getGeneratedKeys ⽅法来取出由数据库内部⽣成的主键,默认false
  • keyProperty:指定能够唯⼀识别对象的属性,MyBatis 会使⽤ getGeneratedKeys 的返回值或 insert 语句的 selectKey ⼦元素设置它的值

删除操作

修改controller:

 @RequestMapping(value = "/update",method = RequestMethod.POST)
    public Integer update( Integer id,  String name) {
        return userService.update(id, name);
    }

mapper.xml:

<update id="update">
        update stu set name=#{name} where id=#{id}
    </update>

其他代码修改跟增加操作相似
深入浅出:MyBatis的使用方法及最佳实践,JavaEE,mybatis,后端,学习,java-ee,spring
查看数据库发现修改成功
深入浅出:MyBatis的使用方法及最佳实践,JavaEE,mybatis,后端,学习,java-ee,spring

修改操作

修改controller:

@RequestMapping("/delById")
    public Integer delById( Integer id){
        return userService.delById(id);
    }

mapper.xml:

  <delete id="delById" parameterType="java.lang.Integer">
        delete from stu where id=#{id}
    </delete>

深入浅出:MyBatis的使用方法及最佳实践,JavaEE,mybatis,后端,学习,java-ee,spring
查看数据库,删除成功
深入浅出:MyBatis的使用方法及最佳实践,JavaEE,mybatis,后端,学习,java-ee,spring文章来源地址https://www.toymoban.com/news/detail-645050.html

到了这里,关于深入浅出:MyBatis的使用方法及最佳实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【深入浅出 Spring Security(十二)】使用第三方(Github)授权登录

    (Github授权登录的具体操作在目录第三“章”) 下面是《深入浅出Spring Security》书中的一段概述: OAuth 是一个开放标准(现在所说的 OAuth 一般都是指 OAuth2,即 2.0 版本),可以理解为是一种协议,该标准允许用户让第三方应用访问该用户在某一网站上存储的私密资源(如头

    2024年02月10日
    浏览(48)
  • 【深入浅出 Spring Security(十三)】使用 JWT 进行前后端分离认证(附源码)

    JWT 全称 Java web Token,在此所讲述的是 JWT 用于身份认证,用服务器端生成的JWT去替代原始的Session认证,以提高安全性。 JWT本质是一个Token令牌,是由三部分组成的字符串,分别是头部(header)、载荷(payload)和签名(signature)。头部一般包含该 JWT 的基本信息,例如所使用的

    2024年02月12日
    浏览(30)
  • 深度学习深入浅出

    目录 一 基本原理 二 深度学习的优点 三 深度学习的缺点 四 深度学习应用 手写数字识别 深度学习是机器学习的一个分支,其核心思想是利用深层神经网络对数据进行建模和学习,从而实现识别、分类、预测等任务。在过去几年中,深度学习技术取得了许多突破性的成果,如

    2023年04月09日
    浏览(43)
  • 深入浅出CenterFusion

    自动驾驶汽车的感知系统一般由多种传感器组成,如lidar、carmera、radar等等。除了特斯拉基于纯视觉方案来进行感知之外,大多数研究还是利用多种传感器融合来建立系统,其中lidar和camera的融合研究比较多。 CenterFusion这篇文章基于nuscenes数据集研究camera和radar的特征层融合,

    2024年02月09日
    浏览(31)
  • 随机森林算法深入浅出

    目录 一 随机森林算法的基本原理 二 随机森林算法的优点 1. 随机森林算法具有很高的准确性和鲁棒性 2. 随机森林算法可以有效地避免过拟合问题 3. 随机森林算法可以处理高维度数据 4. 随机森林算法可以评估特征的重要性 三 随机森林算法的缺点 1. 随机森林算法对于少量数

    2023年04月08日
    浏览(35)
  • 深入浅出线程池

    线程 (thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际 运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线 程并行执行不同的任务。 既然我们创建了线程,那为何我们直接调用方法和我们调

    2024年02月08日
    浏览(32)
  • 深入浅出前端本地储存

    2021 年,如果你的前端应用,需要在浏览器上保存数据,有三个主流方案: Cookie Web Storage (LocalStorage) IndexedDB 这些方案就是如今应用最广、浏览器兼容性最高的三种前端储存方案 今天这篇文章就聊一聊这三种方案的历史,优缺点,以及各自在今天的适用场景 文章在后面还会提

    2024年04月17日
    浏览(66)
  • 机器学习深入浅出

    目录 机器学习基本概念 机器学习算法类型 机器学习的实现步骤 机器学习三个基本要素 机器学习相关应用 1.语音识别 2.图像识别 机器学习是一种人工智能的分支,它使用算法和数学模型来让计算机自主学习数据并做出预测和决策。这种技术正在被广泛应用于各种领域,包括

    2023年04月08日
    浏览(64)
  • 深入浅出IAM(1)

    在本人即将入职的一份基础架构的工作前,我提前联系到了团队leader并跟他进行了一次1-1。谈话中提到了我可能会先上手的一个项目是IAM相关的实现,于是趁着入职前的间隙,我学习了部分优秀开源IAM项目实现思路以及腾讯云开发专家孔老师的专栏。 在反复思考和总结提炼后

    2024年02月05日
    浏览(30)
  • Llama深入浅出

    前方干货预警:这可能是你能够找到的 最容易懂 的 最具实操性 的 学习开源LLM模型源码 的教程。 本例从零开始基于transformers库 逐模块搭建和解读Llama模型源码 (中文可以翻译成羊驼)。 并且训练它来实现一个有趣的实例:两数之和。 输入输出类似如下: 输入:\\\"12345+54321=\\\"

    2024年02月09日
    浏览(43)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包