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");
}
}