mybatis使用

mybatis使用

一、添加配置文件

application.properties配置文件文件中添加数据库连接信息

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useUnicode=true&characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=your_password

常用注释

注解 描述 示例
@Select 用于定义选择(查询)操作的SQL语句。 @Select("SELECT * FROM users WHERE id = #{id}") User selectUser(int id);
@Insert 用于定义插入操作的SQL语句。 @Insert("INSERT INTO users(name, email) VALUES(#{name}, #{email})") void insertUser(User user);
@Update 用于定义更新操作的SQL语句。 @Update("UPDATE users SET name = #{name} WHERE id = #{id}") void updateUser(User user);
@Delete 用于定义删除操作的SQL语句。 @Delete("DELETE FROM users WHERE id = #{id}") int deleteUser(int id);
@Results 用于映射SQL查询的结果集到Java对象的属性。 @Results({ @Result(property = "id", column = "user_id"), @Result(property = "name", column = "user_name") }) @Select(...)
@Result @Results注解内部使用,用于映射单个字段。 作为@Results的子注解使用
@Param 用于给SQL语句中的参数命名,提高可读性和灵活性。 @Select("SELECT * FROM users WHERE id = #{id}") User findUser(@Param("id") int userId);
@Mapper 标记一个接口作为MyBatis的Mapper接口。 @Mapper public interface UserMapper {}
@Options 用于定义SQL语句的执行选项,如fetchSize, timeout等。 @Insert(...) @Options(useGeneratedKeys = true, keyProperty = "id") int insertUser(User user);
@MapKey 当返回的结果是一个Map类型时,用来指定Map中键的字段。 @Select("SELECT * FROM users") @MapKey("id") Map<Integer, User> getUsers();
@ConstructorArgs 用于在使用构造器创建实例时,映射结果到构造器参数。 @ConstructorArgs({ @Arg(column = "id", javaType = int.class), @Arg(column = "name", javaType = String.class) }) User selectUser(int id);
  • 使用示例

二、创建实体类

js 复制代码
public class User {
    private Integer id;
    private String name;
    private String email;

    // getters and setters
    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

二、创建controller包,添加Mapper接口

java 复制代码
@Mapper
public interface UserMapper {

    @Select("SELECT * FROM users WHERE id = #{id}")
    User getUserById(int id);

    @Insert("INSERT INTO users(name, email) VALUES(#{name}, #{email})")
    @Options(useGeneratedKeys = true, keyProperty = "id")
    void insertUser(User user);

    @Update("UPDATE users SET name = #{name}, email = #{email} WHERE id = #{id}")
    void updateUser(User user);

    @Delete("DELETE FROM users WHERE id = #{id}")
    int deleteUserById(int id);
}

@Insert("INSERT INTO users(name, email) VALUES(#{name}, #{email})")

  • #{name} : #预处理sql,可以防止sql注意,{}使用变量,可以根据参数传递对应的值

四、统一回复格式

java 复制代码
package com.aboutjianzhe.response;

import lombok.*;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Result {
    private Integer code ;//1 成功 , 0 失败
    private String msg; //提示信息
    private Object data; //数据 date

    public static Result success(Object data){
        return new Result(1, "success", data);
    }
    public static Result success(){
        return new Result(1, "success", null);
    }
    public static Result error(String msg){
        return new Result(0, msg, null);
    }

    @Override
    public String toString() {
        return "Result{" +
                "code=" + code +
                ", msg='" + msg + '\'' +
                ", data=" + data +
                '}';
    }
}

五、使用 MyBatis Mapper

在服务类中,可以通过 Spring 的依赖注入来使用 MyBatis 的 Mapper。

java 复制代码
package com.aboutjianzhe.controller;

import com.aboutjianzhe.response.Result;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserDataController {
    @PostMapping("/nihao")
    public Result hello(){
        return Result.success("hello");
    }
}
相关推荐
Java小白笔记8 小时前
关于使用Mybatis-Plus 自动填充功能失效问题
spring boot·后端·mybatis
计算机学姐11 小时前
基于SpringBoot+Vue的篮球馆会员信息管理系统
java·vue.js·spring boot·后端·mysql·spring·mybatis
程序员大金12 小时前
基于SpringBoot+Vue+MySQL的智能物流管理系统
java·javascript·vue.js·spring boot·后端·mysql·mybatis
惜.己16 小时前
MyBatis中一对多关系的两种处理方法
java·开发语言·后端·sql·mysql·mybatis·idea
终末圆16 小时前
MyBatis动态SQL中的`if`标签使用【后端 19】
java·数据结构·数据库·sql·算法·spring·mybatis
飞翔的佩奇18 小时前
Java项目: 基于SpringBoot+mybatis+maven医院管理系统(含源码+数据库+任务书+开题报告+毕业论文)
java·数据库·spring boot·毕业设计·maven·mybatis·医院管理系统
这孩子叫逆19 小时前
35. MyBatis中的缓存失效机制是如何工作的?
java·spring·mybatis
ChinaRainbowSea21 小时前
十八,Spring Boot 整合 MyBatis-Plus 的详细配置
java·数据库·spring boot·spring·mybatis·web
飞翔的佩奇1 天前
Java项目: 基于SpringBoot+mybatis+maven课程答疑系统(含源码+数据库+毕业论文)
java·数据库·spring boot·毕业设计·maven·mybatis·课程答疑
OceanSky61 天前
Mybatis中sql数组为空判断
数据库·sql·mybatis·数组判空