mybatis-flex与springBoot整合

news2024/11/21 2:30:16

mybatis-flex基本使用

    • 1.测试sql
    • 2.导入坐标
    • 3.框架搭建
      • 1.pojo层
      • 2.mapper层
      • 3.service层
      • 4.controller层
      • 5.启动类
      • 6.配置类
      • 7.EmpMapper.xml
    • 4.启动测试

本片文章在springBoot3,jdk21下测试通过

注意官方网站为:https://mybatis-flex.com/
请点击:直达网站

1.测试sql

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- 员工表
DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp`  (
  `id` bigint NOT NULL,
  `ename` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  `age` int NULL DEFAULT NULL,
  `dept_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;

INSERT INTO `emp` VALUES (1, '乔峰', 10, '1001');
INSERT INTO `emp` VALUES (2, '段誉', 21, '1001');
INSERT INTO `emp` VALUES (3, '虚竹', 23, '1001');
INSERT INTO `emp` VALUES (4, '阿紫', 18, '1001');
INSERT INTO `emp` VALUES (5, '扫地僧', 85, '1002');
INSERT INTO `emp` VALUES (6, '李秋水', 33, '1002');
INSERT INTO `emp` VALUES (7, '鸠摩智', 50, '1002');
INSERT INTO `emp` VALUES (8, '天山童姥', 60, '1003');
INSERT INTO `emp` VALUES (9, '慕容博', 58, '1003');
INSERT INTO `emp` VALUES (10, '丁春秋', 71, '1005');

SET FOREIGN_KEY_CHECKS = 1;

-- 部门表
DROP TABLE IF EXISTS `dept`;
CREATE TABLE `dept`  (
  `dept_no` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
  `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC;

INSERT INTO `dept` VALUES ('1001', '研发部');
INSERT INTO `dept` VALUES ('1002', '销售部');
INSERT INTO `dept` VALUES ('1003', '财务部');
INSERT INTO `dept` VALUES ('1004', '人事部');

SET FOREIGN_KEY_CHECKS = 1;

2.导入坐标

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.andy</groupId>
    <artifactId>myBatis-Flex_boot3</artifactId>
    <version>1.0-SNAPSHOT</version>
    <!-- 父坐标 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.2.1</version>
        <relativePath/>
    </parent>
    <properties>
        <maven.compiler.source>21</maven.compiler.source>
        <maven.compiler.target>21</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <!-- spring数据坐标 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!-- mybatis-flex -->
        <dependency>
            <groupId>com.mybatis-flex</groupId>
            <artifactId>mybatis-flex-spring-boot-starter</artifactId>
            <version>1.7.6</version>
            <exclusions>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis-spring</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <!-- mybatis与spring合成 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>3.0.3</version>
        </dependency>
        <dependency>
            <groupId>com.mybatis-flex</groupId>
            <artifactId>mybatis-flex-processor</artifactId>
            <version>1.7.6</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.zaxxer</groupId>
            <artifactId>HikariCP</artifactId>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.33</version>
        </dependency>
    </dependencies>
</project>

3.框架搭建

这里只搭建emp表的,dept表的框架各位博主可以自行尝试搭建

1.pojo层

1.flex同样也支持AR模式(Active Record),使用 Active Record 功能时,项目中必须注入对应实体类的 BaseMapper 对象。用过mybatis-plus的博主都知道这一点

2.使用方式与mybatis-plus相同,只需让 Entity 类继承 Model 即可

3.注解

  • @Table:与mybatis-plus的@TableName作用相同
  • @Id(keyType = KeyType.Auto):与mybatis-plus的 @TableId(value = “id”, type = IdType.AUTO)相同
  • @Column 用来对字段进行更多的配置源码如下:
public @interface Column {

    /**
     * 字段名称
     */
    String value() default "";

    /**
     * 是否忽略该字段,可能只是业务字段,而非数据库对应字段
     */
    boolean ignore() default false;

    /**
     * insert 的时候默认值,这个值会直接被拼接到 sql 而不通过参数设置
     */
    String onInsertValue() default "";

    /**
     * update 的时候自动赋值,这个值会直接被拼接到 sql 而不通过参数设置
     */
    String onUpdateValue() default "";

    /**
     * 是否是大字段,大字段 APT 不会生成到 DEFAULT_COLUMNS 里
     */
    boolean isLarge() default false;

    /**
     * 是否是逻辑删除字段,一张表中只能存在 1 一个逻辑删除字段
     * 逻辑删除的字段,被删除时,会设置为 1,正常状态为 0
     */
    boolean isLogicDelete() default false;

    /**
     * 是否为乐观锁字段,若是乐观锁字段的话,数据更新的时候会去检测当前版本号,若更新成功的话会设置当前版本号 +1
     * 只能用于数值的字段
     */
    boolean version() default false;

    /**
     * 配置的 jdbcType
     */
    JdbcType jdbcType() default JdbcType.UNDEFINED;

    /**
     * 自定义 TypeHandler
     */
    Class<? extends TypeHandler> typeHandler() default UnknownTypeHandler.class;

}

4.pojo层代码

@Table(value = "emp")
public class Emp extends Model<Emp> {

    @Id(keyType = KeyType.Auto)
    private  Long id;

    private String ename;

    private Integer age;

    private String deptId;
    
    // getter/setter/toString...

2.mapper层

这里和mybatis-plus的mapper层一样

@Mapper
public interface EmpMapper extends BaseMapper<Emp> {

}

3.service层

这里和mybatis-plus一样

1.service层接口

public interface EmpService extends IService<Emp> {

}

2.实现类接口

@Service
@Transactional
public class EmpServiceImpl extends ServiceImpl<EmpMapper,Emp> implements EmpService {
    
}

4.controller层

这里和mybatis-plus一样

@RestController
@RequestMapping("/emp")
public class EmpController {

    @Resource
    private EmpService empService;

    @GetMapping("/findById")
    public Emp findById(@RequestParam("id") Long id){
        return empService.getById(id);
    }
}

5.启动类

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

6.配置类

#设置数据源
spring:
  datasource:
      driver-class-name: com.mysql.cj.jdbc.Driver
      url: jdbc:mysql://127.0.0.1:3306/study_test?characterEncoding=utf-8&allowMultiQueries=true&zeroDateTimeBehavior=convertToNull&useSSL=false
      username: root
      password: root

7.EmpMapper.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.andy.mapper.EmpMapper">
    
</mapper>

4.启动测试

测试连接:http://localhost:8080/emp/findById?id=1

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1358209.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HashMap最全面试题 连环15问

目录 问1&#xff1a;JDK1.7与1.8中的HashMap底层数据结构有什么不同&#xff1f; 问2&#xff1a;何时会转为红黑树&#xff0c;何时会退化为链表&#xff1f; 问3&#xff1a;HashMap根据key查询的时间复杂度&#xff1f; 问4&#xff1a;为何一上来不树化&#xff1f; …

Android跨进程渲染

文章目录 背景实现步骤服务端客户端参考代码 背景 2024年第一篇博客&#xff0c;希望所有看到这篇博客的同学都能财务自由&#xff0c;早日退休&#xff01; 跨进程渲染就是在服务端进程渲染&#xff0c;在客户端进程显示。在一些 3d 的应用场景&#xff0c;当多个应用需要显…

【揭秘】单例模式DCL导致无法访问对象?

前两天&#xff0c;在审查团队成员的代码时&#xff0c;我发现了一个错误的单例模式写法。 在Java中&#xff0c;单例模式是一种非常常见的设计模式&#xff0c;用于确保一个类只有一个实例&#xff0c;并提供一个全局访问点来获取该实例&#xff0c;但是&#xff0c;如果不正…

微信怎么做小程序店铺?如何制作微信小程序店铺

在这个数字化的时代&#xff0c;拥有一个属于自己的线上店铺已经成为了一种趋势。而微信小程序&#xff0c;作为微信平台上的一种轻应用&#xff0c;无疑成为了许多人开店的首选。那么&#xff0c;如何利用微信小程序开设自己的店铺呢&#xff1f;下面就让我来为大家详细解析一…

盘点2023年12月Sui生态发展,了解Sui近期成长历程!

12月是一年的“收官”月&#xff0c;我们告别了2023&#xff0c;迎来了崭新的2024&#xff0c;而Web3行业多项指标也持续展现增长趋势。Sui紧随行业脚步&#xff0c;开展了一系列生态活动。其中专为圣诞准备的冬季任务送出了50万SUI&#xff0c;与韩国游戏公司NHN合作的NFT限量…

原来圣诞树可以这么做

先看结果 从上到下依次是&#xff1a; 2^0 2^1 2^2 2^3 2^4 2^5 2^6 2^7 ... 依次排下去&#xff0c;最后加4个单位数的数字 原来代码的世界里还有这个美。^V^

软考报名有哪些要求?

报考任何级别不需要学历、资历条件&#xff0c;只要达到相应的专业技术水平就可以报考相应的级别 (一)2024年软考报名入口 2024年软考采用网络报名方式&#xff0c;考生在报名期间进入中国计算机技术职业资格网 (中国计算机技术职业资格网)&#xff0c;点击页面右下角的报名入…

飞凌嵌入式2023年度盘点——步履不停,向上而行

刚刚过去的一年充满了挑战 但飞凌嵌入式始终带着对未来的期许 坚定地向上而行 凡是过往&#xff0c;皆为序章 让我们站在2024年的开端 一起回顾飞凌嵌入式的2023年度大事 1、企业实力&#xff0c;稳步提升 2023年&#xff0c;飞凌嵌入式成为国家级专精特新“小巨人”企业…

ZkSync第一Dex空投交互全教程,Holdstation ZK热点不容错过

2023 年 12 月 8 日&#xff0c;在以太坊基金会的 176 次会议上&#xff0c;开发人员一致同意&#xff0c;如果事情进展顺利&#xff0c;将在 2024 年初定 Goerli 分叉日期&#xff0c;目标是能在 2024 年 1 月激活 Goerli Dencun 测试网&#xff0c;预计能够在 2024 年 3 月~ …

Scikit-Learn线性回归(五)

Scikit-Learn线性回归五&#xff1a;岭回归与Lasso回归 1、误差与模型复杂度2、正则化3、Scikit-Learn岭&#xff08;Ridge&#xff09;回归4、Scikit-Learn Lasso回归 1、误差与模型复杂度 在第二篇文章 Scikit-Learn线性回归(二) 中&#xff0c;我们已经给出了过拟合与模型泛…

CentOS 7 基于官方源码和openssl制作openssh 9.6 rpm包(含ssh-copy-id) —— 筑梦之路

之前写了一篇&#xff1a; CentOS 7 制作openssh 9.6 rpm包更新修复安全漏洞 —— 筑梦之路_升级openssh9.6-CSDN博客 有好几个网友反馈&#xff0c;ssh-keygen生成密钥存在问题&#xff0c;之前的rsa \ dsa加密算法用不了&#xff0c;因此写了一篇&#xff1a; 关于openssh…

mariadb配置慢sql查询

Mariadb和Mysql配置相同 这里配置的事mariadb 修改配置文件 vi /etc/my.cnf.d/server.cnf[mysqld] slow_query_logon slow_query_log_file/data/mysql_data/slow_query_log.log long_query_time2slow_query_logon 开启慢sql查询slow_query_log_file/data/mysql_data/slow_que…

基于MyCat2.0实现MySQL分库分表方案

目录 一、MyCat概述 二、MyCat作用 2.1 数据分片 2.1.1 垂直拆分 2.1.1.1 垂直分库 2.1.1.2 垂直分表 2.1.1.3 总结 2.1.2 水平拆分 2.1.2.1 水平分库 2.1.2.2 水平分表 2.1.2.3 总结 2.2 读写分离 2.3 多数据源整合 三、MyCat 与ShardingJDBC的区别 3.1 MyCat …

vins 实机测试 rs_d435 + imu

vins 实机测试 文章目录 1. imu标定2. camera内参标定3. imu-cam 外参标定4. vins 实际运行5. realsense 1. imu标定 git clone https://github.com/gaowenliang/code_utils.git git clone https://github.com/gaowenliang/imu_utils.git编译运行&#xff0c; roslaunch imu_…

echarts 切换时出现上一次图形残留。

先说结果&#xff1a;悬浮高亮导致。这可能使echarts的bug。 正常情况出现这种问题&#xff0c;一般是setOption 中没有配置notMerge 导致新的配置与旧配置合并。 但是我这里始终配置notMerge: true&#xff0c;但仍然出现这种问题。 最后发现与鼠标悬浮有关。 环境 echar…

小梅哥Xilinx FPGA学习笔记20——无源蜂鸣器驱动设计与验证(音乐发生器设计)

目录 一&#xff1a;章节导读 二&#xff1a;无源蜂鸣器驱动原理 三&#xff1a;PWM 发生器模块设计 3.1 PWM 发生器模块框图 3.2 PWM 发生器模块接口功能描述 3.3 PWM波生成设计文件代码 3.4 测试仿真文件 3.5 测试仿真结果 3.6 板级调试与验证之顶层文件设计 四&am…

民营体检@2023/24:革新、挑战与本质回归

【潮汐商业评论/原创】 被“健康焦虑”困扰的Joy决定给自己来一次全身的检查&#xff0c;在网上一搜才发现&#xff0c;不仅是体检机构&#xff0c;现在各大医院也都可以体检。“感觉价格也都差不多&#xff0c;是选公立还是体检机构呢&#xff1f;”Joy陷入疑惑。 随着近几年…

洛谷 P1873 砍树 (二分 简单)

【二分答案】是分治的一种&#xff0c;这类问题很经典&#xff0c;接下来几篇文章会关于二分答案相关的文章&#xff0c;希望同学们可以完成10道以上的【二分答案】相关问题&#xff0c;以此来加深对【二分答案】这类问题的个人理解。 原公众号链接&#xff1a;分治第二讲&…

pygame学习(二)——绘制线条、圆、矩形等图案

导语 pygame是一个跨平台Python库(pygame news)&#xff0c;专门用来开发游戏。pygame主要为开发、设计2D电子游戏而生&#xff0c;提供图像模块&#xff08;image&#xff09;、声音模块&#xff08;mixer&#xff09;、输入/输出&#xff08;鼠标、键盘、显示屏&#xff09;模…

stable diffusion 基础教程-提示词之光的用法

基图 prompt: masterpiece,best quality,1girl,solo,looking at viewer,brown hair,hair between eyes,bangs,very long hair,red eyes,blush,bare shoulders,(white sundress),full body,Negative prompt: EasyNegative,badhandv4,nsfw,lowres,bad anatomy,bad hands,text…