SpringBoot整合mybatis技术


MyBatis是一款优秀的持久层框架,支持定制化SQL、存储过程以及高级映射。在Spring Boot 中,MyBatis 官方提供了一套自动化配置方案,可以做到MyBatis开箱即用。以下是SpringBoot整合Mybatis技术的实施步骤。

1.在pom.xml中添加mybatis起步依赖

<!-- Mybatis依赖 -->
<dependency>
	<groupId>org.mybatis.spring.boot</groupId>
	<artifactId>mybatis-spring-boot-starter</artifactId>
	<version>2.2.0</version>
</dependency>

2.在pom.xml中添加数据库驱动

<!-- MySql数据库驱动-->
<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<scope>runtime</scope>
</dependency>

3.配置数据库连接信息

在resources/application.yml中添加数据库的连接信息

spring:
  #数据库配置
  datasource:
    url: jdbc:mysql://localhost:3306/myshop?serverTimezone=Asia/Shanghai&allowMultiQueries=true  #设置mysql支持批量操作
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
    dbcp2:
      min-idle: 5
      initial-size: 5
      max-total: 5
      max-wait-millis: 150

4.创建数据库和表对象

4.1新建数据库 myshop

建议在本机安装phpStudy这样的集成开发工具,选择安装mysql5.7(不建议用高版本),启动mysql。
再在本机安装Navicat这样的数据库客户端工具,连接mysql后新建数据库myshop

注意

新建的数据库字符集和排序规则选utf8。

4.2新建user表

通过Navicat这样的数据库客户端工具,在myshop数据库中创建user表。

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '编号',
  `name` varchar(32) NOT NULL DEFAULT '' COMMENT '用户名',
  `password` varchar(32) NOT NULL DEFAULT '' COMMENT '密码',
  `salt` varchar(32) NOT NULL DEFAULT '' COMMENT '密码salt',
  `gender` tinyint(1) NOT NULL DEFAULT '1' COMMENT '性别',
  `email` varchar(100) NOT NULL DEFAULT '' COMMENT '邮箱',
  `phone` varchar(32) NOT NULL DEFAULT '' COMMENT '电话',
  `avatar` varchar(128) DEFAULT NULL COMMENT '头像',
  `nick_name` varchar(128) DEFAULT NULL COMMENT '昵称',
  `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(256) DEFAULT NULL COMMENT '备注',
  `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '状态',
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=35 DEFAULT CHARSET=utf8mb4;

INSERT INTO `user` VALUES ('7', 'dingding', '9fb4c2e34fcbd2fc5008a8de5e5c931c', 'ba822567fe8505e2dfffe81e578e1d0c', '0', 'watchping@163.com', '15958880027', 'http://zjffxxmt.oss-cn-hangzhou.aliyuncs.com/upload/client/2365d1b803c5474385704e4bf7e18330.png', '238', '2021-05-30 12:33:31', '2022-10-02 13:00:30', '123456', '0');
INSERT INTO `user` VALUES ('8', 'dangdang', '9fb4c2e34fcbd2fc5008a8de5e5c931c', 'ba822567fe8505e2dfffe81e578e1d0c', '0', 'watch@163.com', '15958880027', '/images/user_default.png', 'dangdang', '2021-06-07 21:46:29', null, '123456', '0');
INSERT INTO `user` VALUES ('9', 'dingding2', '9fb4c2e34fcbd2fc5008a8de5e5c931c', 'ba822567fe8505e2dfffe81e578e1d0c', '1', 'watchping@163.com', '15958880027', '/images/user_default.png', '', '2021-06-11 14:51:37', null, '123456', '0');
INSERT INTO `user` VALUES ('10', 'dingding4', '9fb4c2e34fcbd2fc5008a8de5e5c931c', 'ba822567fe8505e2dfffe81e578e1d0c', '1', 'Wabc@13.com', '13968290224', '/images/user_default.png', 'show-password', '2021-11-30 12:12:05', null, '123456', '0');
INSERT INTO `user` VALUES ('13', 'admin', '9fb4c2e34fcbd2fc5008a8de5e5c931c', 'ba822567fe8505e2dfffe81e578e1d0c', '1', 'admin@163.com', '13438080338', '/images/admin_default.png', null, '2021-12-01 19:19:40', null, '123456', '0');

5.创建实体Bean

在项目包路径下,新建一个entity包,创建user表对应的实体类User.java。
新建User实体类

package com.zjff.myshop.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.util.Date;

@Data
public class User {
    private Integer id;//编号
    private String name;//用户名
    private String password;//密码
    private String salt;//加密佐料
    private Boolean gender;//性别
    private String email;//邮箱
    private String phone;//手机号
    private String avatar;//头像
    private String nickName;//昵称
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date createTime;//创建时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date updateTime;//更新时间
    private String remark;//备注
}

在类上添加@Data注解后,类属性自动添加对应的set\get的方法。为此需要在pox.xml文件中添加依赖。

<!-- Lombok插件 -->
<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
	<version>1.18.8</version>
	<scope>provided</scope>
</dependency>

Lombok插件的具体使用,请自行百度

6.创建UserMapper接口类。

新建包com.zjff.myshop.mapper,在包中创建UserMapper接口类。代码如下:

package com.zjff.myshop.mapper;

import com.zjff.myshop.entity.User;
import java.util.List;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper {    

    List<User> selectAll();

}

@Mapper注解标记该类是一个mybatis的mapper接口,可以被SpringBoot自动扫描到Spring上下文中。

7.配置Mapper映射文件

在src\main\resources\mapper路径下新建UserMapper.xml配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.zjff.myshop.mapper.UserMapper">
   
    <!--  查询所有用户记录-->
    <select id="selectAll" resultType="com.zjff.myshop.entity.User">
        select * from user
    </select>

</mapper>

8.在application.yml中添加mybatis的信息

# Spring集成Mybatis环境
mybatis:
  # pojo别名扫描包
  typeAliasesPackage: com.zjff.**.entity  
  # 加载Mybatis映射文件  
  mapperLocations: classpath:mapper/**/*Mapper*.xml 

9.编写Controller

新建包com.zjff.myshop.api.front,在包中创建UserController类。代码如下:

package com.zjff.myshop.api.front;

import com.zjff.myshop.entity.User;
import com.zjff.myshop.mapper.UserMapper;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

@RestController
@RequestMapping("/app/v1/user")
public class UserController {   
    @Resource
    private UserMapper userMapper;

    @GetMapping("/selectAll")
    public List<User> selectAll() {
        List<User> userList = userMapper.selectAll();
        return userList;
    }    
}

用到几个注解,说明如下:

注解说明
@RestControllers是@controller和@ResponseBody 的结合。@Controller 将当前修饰的类注入SpringBoot IOC容器,@ResponseBody 指该类中所有的API接口返回的数据,会以Json字符串的形式返回给客户端
@RequestMapping用来处理地址映射请求的注解,可以用于方法或者类上以产生对应的路径
@Resource@Autowride是先到容器查找类型,如果该类型只有一个那么就直接注入,有多个时再根据名字找。@Resource是先到容器按照名字查找,同一名字只有一个则直接注入,同名不同类时则再按照类型查找。
@GetMapping@GetMapping用于处理GET类型的请求方法

10.测试

启动项目后。浏览器中上输入:localhost:5050/app/v1/user/selectAll
浏览器显示所有用户的信息数据,如图所示。
在这里插入图片描述
到此整合mybatis就成功了。

重要说明

这里UserController层直接注入的是数据层的UserMapper接口,不是很规范,最佳实践应该是再新建UserService接口和实现类UserServiceImpl,在UserController中注入UserService。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值