概述

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. ansible-playbook流程控制-when条件判断

    1. ansible-playbook添加判断     when相当于shell脚本里的if 判断,when语句就是用来实现这个功能的,它是一个jinja2的语法,但是不需要双大括号,用法很简单  1 ...

  2. 技术心得丨一种有效攻击BERT等模型的方法

    Is BERT Really Robust? A Strong Baseline for Natural Language Attack on Text Classification and Enta ...

  3. Hudi on Flink在顺丰的实践应用

    ​ 获取PDF版本 请关注"实时流式计算" 后台回复 "flink1015"

  4. MeteoInfoLab脚本示例:AMSR-E卫星数据投影

    AMSR-E(http://nsidc.org/data/amsre/index.html)数据中的Land3数据是HDF-EOS4格式,投影是Cylindrical_Equal_Area.这里示例读 ...

  5. Martyr2项目实现——Number部分的问题求解 (1) Find Pi to Nth Digit

    Martyr2项目实现--Number部分的问题求解 (1) Find Pi to Nth Digit Find Pi to Nth Digit 问题描述: Find PI to the Nth Di ...

  6. Afinal简介和使用方法

    Afinal简介 Afinal 是一个android的sqlite orm 和 ioc 框架.同时封装了android中的http框架,使其更加简单易用: 使用finalBitmap,无需考虑bitm ...

  7. linux修改环境变量后无法登录

    在登陆界面按Ctrl+Alt+F1(F1~F6), 进入 tty 后登陆账号. 执行以下命令: /usr/bin/sudo /usr/bin/vi /etc/environment 将PATH的值复原 ...

  8. oracle强制修改字符集

    首先查看服务端字符集 select * from v$nls_parameters where parameter = 'NLS_CHARACTERSET' NLS_CHARACTERSET WE8M ...

  9. Docker指令整理

    date: 2018-11-18 11:09:28 updated: 2018-11-18 11:09:28 Docker指令整理 管理员权限!!! 查看docker版本 docker -v 启动 s ...

  10. JAVA NIO 基础学习

    package com.hrd.netty.demo.jnio; import java.io.BufferedReader; import java.io.IOException; import j ...