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

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

添加MyBatis框架⽀持

创建⼀个全新的 MyBatis 和 Spring Boot 的项⽬时添加引⽤

如下:

配置连接字符串和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查询用户的功能,流程图如下:

创建数据库和表

创建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 接口,建立起二者之间的映射关系。

    后续可在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 的标签如下:

  • <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 添加访问:

也可返回自增主键,修改如下代码:

@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>

  • 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>

其他代码修改跟增加操作相似

查看数据库发现修改成功

修改操作

修改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>

查看数据库,删除成功


相关文章
|
Java 数据库连接 Spring
“探索Spring与MyBatis集成的最佳实践与技巧“(上)
“探索Spring与MyBatis集成的最佳实践与技巧“
188 0
|
Java 数据库连接 数据库
Mybatis-plus逆向工程使用方法
本文讲解Mybatis-plus逆向工程使用方法。
973 0
Mybatis-plus逆向工程使用方法
|
5月前
|
SQL Java 数据库连接
MyBatis插件深度解析:功能、原理、使用、应用场景与最佳实践
MyBatis插件深度解析:功能、原理、使用、应用场景与最佳实践
|
6月前
|
Java 数据库连接 mybatis
Mybatis中模糊查询like语句的使用方法
Mybatis中模糊查询like语句的使用方法
70 0
|
Java 数据库连接 mybatis
“探索Spring与MyBatis集成的最佳实践与技巧“(下)
“探索Spring与MyBatis集成的最佳实践与技巧“
47 0
MyBatis这样用,同事直呼哇塞,堪称最佳实践
MyBatis是一款非常流行的ORM框架,相信很多小伙伴都在使用。我们经常会把它和MyBatis-Plus或者MBG一起使用,用多了之后对于其一些常规操作就不太熟悉了。最近总结了下MyBatis的实用用法和技巧,希望对大家有所帮助!
|
SQL Oracle Java
MyBatis-最佳实践2
MyBatis-最佳实践2
MyBatis-最佳实践2
|
SQL 缓存 Java
MyBatis-最佳实践
MyBatis-最佳实践
MyBatis-最佳实践
|
SQL Java 数据库连接
MyBatis根据表结构自动生成PO/Mapper代码的最佳实践
MyBatis根据表结构自动生成PO/Mapper代码的最佳实践
1230 0
MyBatis根据表结构自动生成PO/Mapper代码的最佳实践
|
Java 数据库连接 数据库
MyBatis-Generator最佳实践
引用地址:http://arccode.net/2015/02/07/MyBatis-Generator%E6%9C%80%E4%BD%B3%E5%AE%9E%E8%B7%B5/ 最近使用MyBatis开发项目,为了快速开发,发现了一个可快速生成mapper类和mapper配置文件及Model的插件-MyBatis-Generator,总结下该插件的使用及最佳实践.
1370 0
下一篇
无影云桌面