概述

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs映射成数据库中的记录。

相比Hibernate而言,MyBatis 应该算是半ORM框架,它比Hibernate更灵活,灵活在需要自己写sql语句,当然这是对于那些想自己手动写sql语句的人而言的,因为如何写好sql也是一个很重要的课题。

接下来我们就进入正题,如何整合MyBatis框架

整合MyBatis框架

在原先的demo数据库中建表sys_admin_user,并插入测试数据

SET NAMES utf8mb4;

SET FOREIGN_KEY_CHECKS = 0;


-- Table structure for sys_admin_user


DROP TABLE IF EXISTS sys_admin_user;

CREATE TABLE sys_admin_user (

admin_user_id bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID',

user_name varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名',

password varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码',

nick_name varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '昵称',

dept_id bigint(20) DEFAULT NULL COMMENT '部门ID',

phone varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '电话',

email varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '电子邮箱',

avatar varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '头像',

status tinyint(1) NOT NULL DEFAULT 1 COMMENT '状态{0:停用,1:正常}',

deleted_flag tinyint(1) NOT NULL DEFAULT 0 COMMENT '删除标记{0:未删,1:删除}',

login_ip varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '最后登陆IP',

login_time datetime(0) DEFAULT NULL COMMENT '最后登陆时间',

created_at datetime(0) DEFAULT NULL COMMENT '创建时间',

updated_at datetime(0) DEFAULT NULL COMMENT '更新时间',

deleted_at datetime(0) DEFAULT NULL COMMENT '删除时间',

created_by bigint(20) DEFAULT 0 COMMENT '创建者ID',

updated_by bigint(20) DEFAULT 0 COMMENT '更新者ID',

deleted_by bigint(20) DEFAULT 0 COMMENT '删除者ID',

remark varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT '' COMMENT '备注',

PRIMARY KEY (admin_user_id) USING BTREE

) ENGINE = InnoDB AUTO_INCREMENT = 14 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;


-- Records of sys_admin_user


INSERT INTO sys_admin_user VALUES (1, 'admin', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '卡卡罗特', 1, '123456', 'admin@qq.com', NULL, 1, 0, '127.0.0.1', '2020-10-17 16:16:11', '2020-10-17 16:16:16', '2020-10-17 16:16:18', NULL, 0, 0, 0, '超级管理');

INSERT INTO sys_admin_user VALUES (2, 'singlezhang', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '张三', 1, '123456', 'admin@qq.com', NULL, 1, 0, '127.0.0.1', '2020-10-17 16:16:11', '2020-10-17 16:16:16', '2020-10-17 16:16:18', NULL, 0, 0, 0, '普通管理');

INSERT INTO sys_admin_user VALUES (4, 'xiaoli', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '小李', 3, '123456', 'admin@qq.com', NULL, 1, 0, '127.0.0.1', '2020-10-17 16:16:11', '2020-10-17 16:16:16', '2020-10-17 16:16:18', NULL, 0, 0, 0, '普通员工');

INSERT INTO sys_admin_user VALUES (6, 'yiming', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '一鸣', 3, '123456', 'admin@qq.com', NULL, 1, 0, '127.0.0.1', '2020-10-17 16:16:11', '2020-10-17 16:16:16', '2020-10-17 16:16:18', NULL, 0, 0, 0, '普通员工');

INSERT INTO sys_admin_user VALUES (7, 'lisan', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '李三', 4, '123456', 'admin@qq.com', NULL, 1, 0, '127.0.0.1', '2020-10-17 16:16:11', '2020-10-17 16:16:16', '2020-10-17 16:16:18', NULL, 0, 0, 0, '普通员工');

INSERT INTO sys_admin_user VALUES (8, 'laoqian', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '老钱', 3, '123456', 'admin@qq.com', NULL, 1, 0, '127.0.0.1', '2020-10-17 16:16:11', '2020-10-17 16:16:16', '2020-10-17 16:16:18', NULL, 0, 0, 0, '普通员工');

INSERT INTO sys_admin_user VALUES (9, 'xiaomi', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '小米', 5, '123456', 'admin@qq.com', NULL, 1, 0, '127.0.0.1', '2020-10-17 16:16:11', '2020-10-17 16:16:16', '2020-10-17 16:16:18', NULL, 0, 0, 0, '普通员工');

INSERT INTO sys_admin_user VALUES (10, 'jiekema', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '杰克马', 5, '123456', 'admin@qq.com', NULL, 1, 0, '127.0.0.1', '2020-10-17 16:16:11', '2020-10-17 16:16:16', '2020-10-17 16:16:18', NULL, 0, 0, 0, '普通员工');

INSERT INTO sys_admin_user VALUES (11, 'misschen', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '小陈', 4, '123456', 'admin@qq.com', NULL, 1, 0, '127.0.0.1', '2020-10-17 16:16:11', '2020-10-17 16:16:16', '2020-10-17 16:16:18', NULL, 0, 0, 0, '普通员工');

INSERT INTO sys_admin_user VALUES (12, 'jiekema2', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '杰克马2', 3, '123456', 'admin@qq.com', NULL, 1, 0, '127.0.0.1', '2020-10-17 16:16:11', '2020-10-17 16:16:16', '2020-10-17 16:16:18', NULL, 0, 0, 0, '普通员工');

INSERT INTO sys_admin_user VALUES (13, 'jiekema3', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '杰克马3', 3, '123456', 'admin@qq.com', NULL, 1, 0, '127.0.0.1', '2020-10-17 16:16:11', '2020-10-17 16:16:16', '2020-10-17 16:16:18', NULL, 0, 0, 0, '普通员工');

SET FOREIGN_KEY_CHECKS = 1;

在 pom.xml中添加mybatis依赖(文中只涉及本文相关依赖,其他的依赖在前文中参考)

    <!-- Mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency> <!-- SpringBoot集成mybatis框架 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis.boot.version}</version>
</dependency>

3.使用mybatis-generator插件生成 DAO,Model,XML映射文件,如下图:

mybatis-generator

※说明:关于mybatis-generator插件的使用,可以在《如何使用mybatis-generator插件,自动生成mybatis相关文件》一文中了解。

4.添加MyBatis配置类:MybatisConfig.java

package com.zhlab.demo.config;

import org.apache.ibatis.session.SqlSessionFactory;

import org.mybatis.spring.SqlSessionFactoryBean;

import org.mybatis.spring.annotation.MapperScan;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;

import org.springframework.core.io.support.PathMatchingResourcePatternResolver;

import javax.sql.DataSource;

/**

  • @ClassName MybatisConfig

  • @Description //MybatisConfig配置类

  • @Author singleZhang

  • @Email 405780096@qq.com

  • @Date 2020/10/31 0031 上午 9:37

    **/

    @Configuration

    @MapperScan("com.zhlab.demo.mapper") //mapper

    public class MybatisConfig {

    @Autowired

    private DataSource dataSource;

    @Bean

    public SqlSessionFactory sqlSessionFactory() throws Exception {

    SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();

    sessionFactory.setDataSource(dataSource);

     sessionFactory.setTypeAliasesPackage("com.zhlab.demo.model"); // model
    
     PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
    sessionFactory.setMapperLocations(resolver.getResources("classpath*:mapper/*.xml")); // 扫描映射文件 return sessionFactory.getObject();

    }

}

在DAO层的SysAdminUserMapper.java中添加selectAll()

package com.zhlab.demo.mapper;

import com.zhlab.demo.model.SysAdminUser;

import java.util.List;

public interface SysAdminUserMapper {

int insert(SysAdminUser record);

// 获取用户列表
List<SysAdminUser> selectAll();

}

在对应的xml映射文件SysAdminUserMapper.xml中增加selectAll

select u.*
from sys_admin_user u

在service层增加SysAdminUserService.java,并调用DAO层中SysAdminUserMapper的方法

import org.springframework.stereotype.Service;

import java.util.List;

/**

  • @ClassName SysAdminUserService

  • @Description //TODO

  • @Author singleZhang

  • @Email 405780096@qq.com

  • @Date 2020/10/31 0031 上午 9:45

    **/

    @Service

    public class SysAdminUserService {

    @Autowired

    SysAdminUserMapper sysAdminUserMapper;

    // 获取用户列表

    public List findAll(){

    return sysAdminUserMapper.selectAll();

    }

}

在接口层创建一个UserController.java,来测试一下

package com.zhlab.demo.controller;

import com.zhlab.demo.model.SysAdminUser;

import com.zhlab.demo.service.SysAdminUserService;

import io.swagger.annotations.ApiOperation;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.web.bind.annotation.GetMapping;

import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**

  • @ClassName UserController

  • @Description //TODO

  • @Author singleZhang

  • @Email 405780096@qq.com

  • @Date 2020/10/31 0031 上午 9:43

    **/

    @RestController

    @RequestMapping("/user")

    public class UserController {

    @Autowired

    SysAdminUserService sysAdminUserService;

    /* 方法注解 */

    @ApiOperation(value = "方法名:用户列表", notes = "获取用户列表")

    @GetMapping("/list")

    public List list(){

    List list = sysAdminUserService.findAll();

     return list;

    }

}

运行项目,打开http://localhost:8080/swagger-ui.html看执行效果

用户列表接口

运行这个接口,可以得到想要的所有用户的列表

用户列表

总结

Mybatis的集成还是比较简单的,后续还会讲解分页以及复杂查询,对于插件的使用可以选择一种mybatis-generator或者mybatis-plus,两种不可同时使用,会发生冲突。

返回【Spring Boot学习】目录

作者:https://www.hbfzb.com/index.php

链接:http://www.autono1.com/

来源:http://szgc.glodon.com/news.php

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

SpringBoot+MySQL,如何整合并使用MyBatis框架的更多相关文章

  1. OSGI企业应用开发(九)整合Spring和Mybatis框架(二)

    上篇文章中,我们完成了在OSGI应用中整合Spring和Mybatis框架的准备工作,本节我们继续Spring和Mybatis框架的整合. 一.解决OSGI整合Spring中的Placeholder问 ...

  2. OSGI企业应用开发(八)整合Spring和Mybatis框架(一)

    到目前为止,我们已经学习了如何使用Blueprint將Spring框架整合到OSGI应用中,并学习了Blueprint&Gemini Blueprint的一些使用细节.本篇文章开始,我们將My ...

  3. OSGI企业应用开发(十)整合Spring和Mybatis框架(三)

    上篇文章中,我们已经完成了OSGI应用中Spring和Mybatis框架的整合,本文就来介绍一下,如何在其他Bundle中,使用Mybatis框架来操作数据库. 为了方便演示,我们新建一个新的Plug ...

  4. 框架整合——Spring与MyBatis框架整合

    Spring整合MyBatis 1. 整合 Spring [整合目标:在spring的配置文件中配置SqlSessionFactory以及让mybatis用上spring的声明式事务] 1). 加入 ...

  5. 阶段3 3.SpringMVC·_07.SSM整合案例_07.ssm整合之编写MyBatis框架测试保存的方法

    再写一个测试的方法,测试save保存的方法 需要提交事务才能保存到数据库

  6. 阶段3 3.SpringMVC·_07.SSM整合案例_06.ssm整合之编写MyBatis框架

    需要先搭建Mybits的环境. 用Mybits的注解的方式.把两个方法的sql语句写完 SqlMapConfig.xml resources下新建xml文档 把约束粘贴过来 两步操作 环境标签叫做en ...

  7. SpringBoot 整合jdbc和mybatis

    摘要 该文章主要为记录如何在SpringBoot项目中整合JDBC和MyBatis,在整合中我会使用简单的用法和测试用例,毕竟该文章目的是为了整合,而不是教大家如何去使用.希望大家多多包涵. 通用配置 ...

  8. SpringBoot入门篇--整合mybatis+generator自动生成代码+druid连接池+PageHelper分页插件

    原文链接 我们这一篇博客讲的是如何整合Springboot和Mybatis框架,然后使用generator自动生成mapper,pojo等文件.然后再使用阿里巴巴提供的开源连接池druid,这个连接池 ...

  9. Spring Boot:整合MyBatis框架

    综合概述 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集.MyBatis 可以使用简单 ...

随机推荐

  1. 多测师讲解python _unttest框架001(基本格式)_高级讲师肖sir

    1.unittest基本介绍 import unittest #导入unittest模块 #class Test(unittest.TestCase): def setUp(self): #创建dri ...

  2. 多测师浅谈 学员实现价值就是我们的幸福_高级讲师肖sir

    学员实现价值就是我们的幸福 作为一名资深的IT高级讲师,在传统的行业IT薪资基本都是过万,作为一名IT培训教师,培养出在不同领域的测试,并且接触各种各样的产品,目前市场流行的比如银行业务系统,语音类系 ...

  3. C/C++编程日记:用C语言实现的简单Web服务器(Linux),全代码分享!

    相信大家对Apache都有所听闻,Apache是目前使用最为广泛我Web服务器.大家可以从news.netcraft.com/这个网站得到证实. 这是腾讯的uptime.netcraft.com/up ...

  4. P2340 [USACO03FALL]Cow Exhibition G题解

    新的奇巧淫技 原题传送门 众所周知,模拟退火是一种很强大的算法,DP很强,但我模拟退火也不虚,很多题你如果不会的话基本可以拿来水很多分.比如这道题,我用模拟退火可以轻松水过(虽然我是足足交了两页才过) ...

  5. 初识 MongoDB 和 .NET Core 入门

    昨天搭建完毕 MongoDB 集群 后,开始计划了解 MongoDB ,并引入使用场景,这里介绍一下学习过程中的一些笔记,帮助读者快速了解 MongoDB 并使用 C# 对其进行编码. 浅入 Mong ...

  6. git-submodule子模块的添加、使用和删除

    目录 添加 使用 更新 删除 hugo添加主题的时候 命令如下: git submodule add https://github.com/samrobbins85/hugo-developer-po ...

  7. kafka生产者 消费者

    publisher.php <?php $rk = new RdKafka\Producer(); $rk->addBrokers("192.168.33.50"); ...

  8. Jmeter创建随机数作为参数使用 转

    1.选项-函数值手对话框:2.选择适当的函数,比如"__Random()":3.输入参数,比如随机数的最大.最小数:4."Name of variable in whic ...

  9. gin+gorm 用户服务

    package main import ( "fmt" "github.com/gin-gonic/gin" "github.com/jinzhu/g ...

  10. Linux如何在vim里搜索关键字

    例如搜索 the写法:/the     +回车 /+关键字 ,回车即可.此为从文档当前位置向下查找关键字,按n键查找关键字下一个位置: ?+关键字,回车即可.此为从文档挡圈位置向上查找关键字,按n键向 ...