MyBatis 的注解实现方法

MyBatis 的注解实现方法引入依赖添加配置创建表创建实体类创建mapper接口@Insert@Delete@Select@Results和@ResultMap通过配置文件解决

@Update@Options

MyBatis 的注解实现方法

引入依赖

在springBoot项目中下载了EditStarters插件的,可以直接在配置文件处右键 点击generate 再次点击这个插件 在SQL中将图中的勾上就可以啦

添加配置

spring:

datasource:

url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=false

username: root

password: 111111

driver-class-name: com.mysql.cj.jdbc.Driver

这里需要注意的是,需要连接的数据库的名称,这里我们使用mybatis_test,还要注意个人的用户名和密码

创建表

-- 创建数据库

DROP DATABASE IF EXISTS mybatis_test;

CREATE DATABASE mybatis_test DEFAULT CHARACTER SET utf8mb4;

-- 使⽤数据数据

USE mybatis_test;

-- 创建表[⽤⼾表]

DROP TABLE IF EXISTS userinfo;

CREATE TABLE `userinfo` (

`id` INT ( 11 ) NOT NULL AUTO_INCREMENT,

`username` VARCHAR ( 127 ) NOT NULL,

`password` VARCHAR ( 127 ) NOT NULL,

`age` TINYINT ( 4 ) NOT NULL,

`gender` TINYINT ( 4 ) DEFAULT '0' COMMENT '1-男 2-⼥ 0-默认',

`phone` VARCHAR ( 15 ) DEFAULT NULL,

`delete_flag` TINYINT ( 4 ) DEFAULT 0 COMMENT '0-正常, 1-删除',

`create_time` DATETIME DEFAULT now(),

`update_time` DATETIME DEFAULT now(),

PRIMARY KEY ( `id` )

) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;

-- 添加⽤⼾信息

INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )

VALUES ( 'admin', 'admin', 18, 1, '18612340001' );

INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )

VALUES ( 'zhangsan', 'zhangsan', 18, 1, '18612340002' );

INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )

VALUES ( 'lisi', 'lisi', 18, 1, '18612340003' );

INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )

VALUES ( 'wangwu', 'wangwu', 18, 1, '18612340004' );

创建实体类

因为我们在数据库中创建了一个userinfo这样一个表,下面我们要通过mybatis来操作数据库,就需要用到实体类的映射关系

package com.example.demo.model;

import lombok.Data;

import java.util.Date;

@Data

public class UserInfo {

private Integer id;

private String username;

private String password;

private Integer age;

private Integer gender;

private String phone;

private Integer deleteFlag;

private Date createTime;

private Date updateTime;

}

实体类的属性名与表中的字段名⼀⼀对应

创建mapper接口

这里创建的接口,后缀最好是以mapper结尾,因为在工作中,mapper里面都是存放的操作数据库的相关代码,而正因为如此,我们可以给他加上一个@Mapper注解来将这个类交给spring来管理, 这里为什么创建的是接口,而不是类,因为接下来我们要实现的操作数据库的方法都不会对齐进行实现,我们只需要将方法定义出来,剩下的交给我们这次的主题,注解来实现

@Insert

对于数据中的添加数据的操作,我们可以先创建一个insert方法

package com.example.demo.mapper;

import com.example.demo.model.UserInfo;

import org.apache.ibatis.annotations.Mapper;

@Mapper

public interface mapper {

Integer insert(UserInfo userInfo);

}

创建完成之后,我们需要使用@Insert来编写我们的sql代码

package com.example.demo.mapper;

import com.example.demo.model.UserInfo;

import org.apache.ibatis.annotations.Insert;

import org.apache.ibatis.annotations.Mapper;

@Mapper

public interface mapper {

@Insert(("insert into userinfo (username,password,age,gender,phone) " +

"values (#{username},#{password},#{age},#{gender},#{phone})"))

Integer insert(UserInfo userInfo);

}

这里的#中的username代表Java对象的属性,前面的代表数据库中的字段属性 既然我们是添加数据,那么我们就需要给该方法传递一个需要添加的对象,返回值则是对于sql的返回值

@Delete

对于数据中的删除数据的操作,根据上面的操作,我们也可以使用注解的方法实现

package com.example.demo.mapper;

import com.example.demo.model.UserInfo;

import org.apache.ibatis.annotations.Delete;

import org.apache.ibatis.annotations.Insert;

import org.apache.ibatis.annotations.Mapper;

@Mapper

public interface mapper {

@Insert(("insert into userinfo (username,password,age,gender,phone) " +

"values (#{username},#{password},#{age},#{gender},#{phone})"))

Integer insert(UserInfo userInfo);

@Delete("delete from userinfo where id=#{id}")

Integer delete(Integer id);

}

@Select

这里需要注意,创建数据库中的表的适合,我们使用的delete_flag,而创建实体类的适合,我们创建的是deleteFlag,很显然,名字格式不同,这会导致查询时,会因为数据格式不同,而导致显示不出对应的数据 怎么解决呢,有三种解决方法,sql中对数据库属性名进行重命名,很显然,这是不优雅的,下面我们介绍另外两种解决方法

@Results和@ResultMap

@Results( id = "BaseMap",value = {@Result(column = "delete_flag",property = "deleteFlag"),

@Result(column = "create_time",property = "createTime"),

@Result(column = "update_time",property = "updateTime")})

在进行上述定义之后,想在其他地方使用时,就可以使用@ResultMap注解来实现

@Select("select * from userinfo")

@Results( id = "BaseMap",value = {@Result(column = "delete_flag",property = "deleteFlag"),

@Result(column = "create_time",property = "createTime"),

@Result(column = "update_time",property = "updateTime")})

List selectAll();

@Select("select id,username,password,age,gender,phone,delete_flag,create_time,update_time from userinfo where id=#{id}")

@ResultMap("BaseMap")

List select(Integer id);

通过配置文件解决

mybatis:

configuration:

map-underscore-to-camel-case: true

在配置文件中加入以上代码,即可实现自动转驼峰

@Update

@Update("update userinfo set password=#{password} where id=#{id}")

Integer upDate(UserInfo userInfo);

@Options

当我们想要查看数据库中的自增变量时,我们就可以使用@Options来对变量进行映射

@Options(useGeneratedKeys = true,keyProperty = "id")

相关文章

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: