Spring Boot(Smart Moon项目)集成Mybatis

Spring Boot(Smart Moon项目)集成Mybatis

一、Spring引入Mybatis

  • 编辑项目根目录的pom.xml,添加以下内容

    <!-- mybatis-generator -->
    <dependency>
         <groupId>org.mybatis</groupId>
         <artifactId>mybatis</artifactId>
         <version>3.5.10</version>
    </dependency>
    <!-- mybatis-->
    <dependency>
         <groupId>org.mybatis.spring.boot</groupId>
         <artifactId>mybatis-spring-boot-starter</artifactId>
         <version>2.2.2</version>
    </dependency>
    

二、配置Mybatis generator自动生成CURD接口基础代码

  • resource目录下配置generator.properties

    jdbc.driverLocation=D:\\SQL\\mysql-connector-8.0.23\\mysql-connector-java-8.0.23.jar
    jdbc.driverClass=com.mysql.cj.jdbc.Driver #需要指定连接驱动路径
    jdbc.connectionURL=jdbc:mysql://localhost:3306/database_name?characterEncoding=utf-8
    jdbc.userId=root
    jdbc.password=your_password
    
    
    pom.xml
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
            <!-- 新增配置-->
            <plugin>
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
            </plugin>
        </plugins>
    </build>
    
    
  • resource目录下配置generatorConfig.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE generatorConfiguration
            PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
            "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
    
    <generatorConfiguration>
        <!--导入属性配置-->
        <properties resource="generator.properties"/>
    
        <!--指定特定数据库的jdbc驱动jar包的位置-->
        <classPathEntry location="${jdbc.driverLocation}"/>
    
        <context id="default" targetRuntime="MyBatis3">
    
            <!-- 注释 -->
            <commentGenerator>
                <property name="suppressAllComments" value="true" /><!-- 是否取消注释 -->
                <!-- <property name="suppressDate" value="true" />  是否生成注释代时间戳 -->
            </commentGenerator>
    
            <!--jdbc的数据库连接 -->
            <jdbcConnection
                    driverClass="${jdbc.driverClass}"
                    connectionURL="${jdbc.connectionURL}"
                    userId="${jdbc.userId}"
                    password="${jdbc.password}">
            </jdbcConnection>
    
    
            <!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制-->
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false"/>
            </javaTypeResolver>
    
    
            <!-- Model模型生成器,用来生成含有主键key的类,记录类 以及查询Example类
                targetPackage     指定生成的model生成所在的包名
                targetProject     指定在该项目下所在的路径
            -->
            <javaModelGenerator targetPackage="com.demo.smartmoon.model"
                                targetProject="src/main/java">
    
                <!-- 是否允许子包,即targetPackage.schemaName.tableName -->
                <property name="enableSubPackages" value="false"/>
                <!-- 是否对model添加 构造函数 -->
                <property name="constructorBased" value="true"/>
                <!-- 是否对类CHAR类型的列的数据进行trim操作 -->
                <property name="trimStrings" value="true"/>
                <!-- 建立的Model对象是否 不可改变  即生成的Model对象不会有 setter方法,只有构造方法 -->
                <property name="immutable" value="false"/>
            </javaModelGenerator>
    
            <!--在resources目录下的mapper文件,生成数据库的表对应的xml文件 -->
            <sqlMapGenerator targetPackage="mapping"
                             targetProject="src/main/resources">
                <property name="enableSubPackages" value="false"/>
            </sqlMapGenerator>
    
            <!-- 生成dao层的java代码
                    type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象
                    type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象
                    type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口
            -->
            <javaClientGenerator targetPackage="com.demo.smartmoon.mapper" #项目包配置
                                 targetProject="src/main/java" type="XMLMAPPER">
                <property name="enableSubPackages" value="false"/>
            </javaClientGenerator>
    
            <!-- 数据表名及实体类名称  -->
            <table tableName="your_tableName" domainObjectName="希望生成的实体类的类名"
                   enableCountByExample="false" enableUpdateByExample="false"
                   enableDeleteByExample="false" enableSelectByExample="false"
                   selectByExampleQueryId="false">
            </table>
    
        </context>
    </generatorConfiguration>
    
    

    如若:http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd 报红,可以将此链接复制到浏览器打开,下载文件后,存在在自定义路径,然后编辑IEDA的file -> setting -> Schemas and DTDs -> 找到EXternal schemas and DTDs:点击 + 号,

    • URL填写http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd
    • File: 浏览找到文件下载后的存放位置,点击apply -> OK 退出

    在这里插入图片描述
    在这里插入图片描述

  • 编辑Run配置

    • 点击工具栏Run -> Edit Configurations…

      在这里插入图片描述

    • 点击+号 -> 选择maven,配置如下内容后点击apply -> Ok 退出:

      • Name: mybatis-generator 【可以自定义】
      • Run: mybatis-generator:generate -e

      在这里插入图片描述

    • 点击Run选择:mybatis-generator,自动生成配置generatorConfig.xml文件配置中, 注释下的表的对应CURD基础代码

三、编写Controller

  • 项目路径src\main\java\com\demo\smartmoon新建controller包,新建SysUserController【本项目使用】

    
    @RestController
    @RequestMapping(value = "/api/2/user", produces = MediaType.APPLICATION_JSON_VALUE)
    public class SysUserController {
        @Autowired
        private SysUserService sysUserService;
        
        @GetMapping(value = "/findByID")
        public Object findByID(@RequestParam Long id){
            return Response.success(sysUserService.findByID(id));
        }
    
        @ApiOperation(value = "新增用户信息")
        public Object insertSysUser(@RequestBody SysUser sysUser){
            return Response.success(sysUserService.insertSysUser(sysUser));
        }
    }
    
    • 测试效果:

      在这里插入图片描述

四、对接Knife4j

  • application.yml配置文件开启knife4j

    knife4j:
      # 开启增强配置
      enable: true
    
  • controller新增注解

    
    @RestController
    @RequestMapping(value = "/api/2/user", produces = MediaType.APPLICATION_JSON_VALUE)
    @EnableOpenApi
    @Api(value = "信息管理", tags="账户管理")
    public class SysUserController {
        @Autowired
        private SysUserService sysUserService;
    
        @ApiOperation(value = "根据ID查询账户列表")
        @GetMapping(value = "/findByID")
        @ApiOperationSupport(author = "xuanyu.li")
        public Object findByID(@RequestParam Long id){
            System.out.println(id);
            return Response.success(sysUserService.findByID(id));
        }
    
        @ApiOperation(value = "新增用户信息")
        @PostMapping (value = "/insertSysUser")
        @ApiOperationSupport(author = "xuanyu.li")
        public Object insertSysUser(@RequestBody SysUser sysUser){
            return Response.success(sysUserService.insertSysUser(sysUser));
        }
    }
    
  • 实体类model新增注解【如果想要在knife4j的swagger models看见】

    
    @Data
    @ApiModel(value = "SysUser",description = "用户实体对象")
    public class SysUser {
        @ApiModelProperty(value = "主键id", name = "id")
        private Long id;
    
        @ApiModelProperty(value = "name", name = "name")
        private String name;
    
        @ApiModelProperty(value = "nickName", name = "nickName")
        private String nickName;
    
        @ApiModelProperty(value = "avater", name = "avater")
        private String avater;
    
        @ApiModelProperty(value = "salt", name = "salt")
        private String salt;
    
        @ApiModelProperty(value = "password", name = "password")
        private String password;
    
        @ApiModelProperty(value = "email", name = "email")
        private String email;
    
        @ApiModelProperty(value = "mobile", name = "mobile")
        private String mobile;
    
        @ApiModelProperty(value = "status", name = "status")
        private Byte status;
    
        @ApiModelProperty(value = "deptId", name = "deptId")
        private Long deptId;
    ......【略,根据自己表确定】
    
  • 效果:

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玉言心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值