• 学习spring cloud记录2在项目中使用mybatisplus


    前言

    本记录详细记录本人学习spring cloud继承mybatis plus方法,适用于初学者。

    项目结构简单介绍

    本系统目前新建两个dmeo服务,分别是demo-user和demo-order两个module,结构完全一样,配置文件个人喜欢使用yml文件,结构如下:

     引入依赖

    目前最新依赖为:

            <!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.5.1</version>
            </dependency>

    多个项目同时需要这个依赖,可以将依赖在父级的pom文件中进行配置,然后让所有子模块继承父级即可,操作如下:

    在所有子模块中添加parent标签,以表示父级地址,本项目如下:

        <parent>
            <groupId>priv.sinoam.cloud</groupId>
            <artifactId>spring-cloud</artifactId>
            <version>1.0-SNAPSHOT</version>
        </parent>

    在父级将module表示出来:

        <modules>
            <module>demo-order</module>
            <module>demo-user</module>
        </modules>

    配置完成后,子集项目可以共用父级所配置的依赖

    配置application.yml配置文件

    1.配置数据源

    本项目使用MYSQL数据库,配置如下:

    spring:
      application:
        name: demo-user
      datasource:
        url: jdbc:mysql://localhost:3306/springcloud-demo
        username: root
        password: *******
        driver-class-name: com.mysql.cj.jdbc.Driver

    最新驱动为com.mysql.cj.jdbc.Driver,使用以前的会报错误

    2.配置mybatis-plus

    mybatis-plus:
      global-config:
        db-config:
          id-type: auto
          field-strategy: not_empty
            #驼峰下划线转换
          column-underline: true
            #逻辑删除配置
          logic-delete-value: 0
          logic-not-delete-value: 1
          db-type: mysql
        refresh: false
      configuration:
        map-underscore-to-camel-case: true
        cache-enabled: false
      mapper-locations: /mapper/**/*Mapper.xml

    配置完成后,数据库和实体类必须是下划线式、驼峰式进行对应,否则使用自带的sql执行方法会找不到表

    如最后一行所配置,实际路径为src/main/resources/mapper/**/*Mapper.xml,在src/main/resources/mapper下面的所有结尾为Mapper.xml的文件,都会被扫描到,如此一来,可以在mapper中写复杂sql

    使用

    以SYS_USER表为例,表结构如下:

     新建实体类:

     1 package priv.sinoam.demouser.demo.po;
     2 
     3 import java.io.Serializable;
     4 
     5 import lombok.Data;
     6 
     7 /**
     8  * sys_user
     9  *
    10  * @author
    11  */
    12 @Data
    13 public class SysUser implements Serializable {
    14     private String id;
    15 
    16     /**
    17      * 账号
    18      */
    19     private String account;
    20 
    21     /**
    22      * 姓名
    23      */
    24     private String name;
    25 
    26     private static final long serialVersionUID = 1L;
    27 }

    新建Dao层接口:

    1 package priv.sinoam.demouser.demo.mapper;
    2 
    3 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    4 import org.apache.ibatis.annotations.Mapper;
    5 import priv.sinoam.demouser.demo.po.SysUser;
    6 
    7 @Mapper
    8 public interface SysUserDao extends BaseMapper<SysUser> {
    9 }

    继承BaseMapper,将实体类传进去,需要注解@Mapper

    在service层中进行使用,首先将接口注入进去:

        @Autowired
        private SysUserDao sysUserDao;

    然后调用时会发现单表增删改查已经自动集成,直接调用即可

     若要写复杂sql,则需要在xml中进行编写。

    先在Dao层接口中声明方法queryTest:

    @Mapper
    public interface SysUserDao extends BaseMapper<SysUser> {
    
        String queryTest();
    
    }

    然后再在对应的xml中编写sql:

    <?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="priv.sinoam.demouser.demo.mapper.SysUserDao">
      <resultMap id="BaseResultMap" type="priv.sinoam.demouser.demo.po.SysUser">
        <id column="ID" jdbcType="VARCHAR" property="id" />
        <result column="ACCOUNT" jdbcType="VARCHAR" property="account" />
        <result column="NAME" jdbcType="VARCHAR" property="name" />
      </resultMap>
      <sql id="Base_Column_List">
        ID, ACCOUNT, `NAME`
      </sql>
      <select id="queryTest" resultType="java.lang.String">
        select ID from SYS_USER WHERE ID = 1
      </select>
    
    </mapper>

    namespace为命名空间;只想对应的Dao接口,resultMap为结果集,指定返回结果为实体类,而且和字段一一对应,使用Base_Column_List作为返回值时,会自动转成实体类;最后可以看到select标签,id即Dao层接口的方法名,执行此方法后,将会执行这个sql。

    结束

    已经测试通过,主要环节在于配置。

  • 相关阅读:
    [NOI2019]回家路线(最短路,斜率优化)
    LOJ6686 Stupid GCD(数论,欧拉函数,杜教筛)
    Codeforces Global Round 4 题解
    CF908G New Year and Original Order(DP,数位 DP)
    [BJOI2019]光线(DP)
    CF1194F Crossword Expert(数论,组合数学)
    SPOJ31428 FIBONOMIAL(斐波那契数列)
    Codeforces Round 573 (Div.1) 题解
    [THUPC2018]弗雷兹的玩具商店(线段树,背包)
    数学基础
  • 原文地址:https://www.cnblogs.com/lgqrlchinese/p/16109688.html
Copyright © 2020-2023  润新知