<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Mybatis中@select注解聯(lián)合查詢

      前言

      在項(xiàng)目中經(jīng)常會(huì)使用到一些簡(jiǎn)單的聯(lián)合查詢獲取對(duì)應(yīng)的數(shù)據(jù)信息,我們常規(guī)都是會(huì)根據(jù)對(duì)應(yīng)的mapper接口寫對(duì)應(yīng)的mapper.xml的來通過對(duì)應(yīng)的業(yè)務(wù)方法來調(diào)用獲取,針對(duì)這一點(diǎn)本人感覺有點(diǎn)繁瑣,就對(duì)@select注解聯(lián)合查詢進(jìn)行探索和嘗試,并將自己總結(jié)的分享給大家,有不到之處,敬請(qǐng)大家批評(píng)指正!!!

      • pom.xml所用到依賴如下

          <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-web</artifactId>
              </dependency>
      
              <dependency>
                  <groupId>org.projectlombok</groupId>
                  <artifactId>lombok</artifactId>
                  <optional>true</optional>
              </dependency>
              <dependency>
                  <groupId>org.springframework.boot</groupId>
                  <artifactId>spring-boot-starter-test</artifactId>
                  <scope>test</scope>
              </dependency>
              <dependency>
                  <groupId>org.mybatis.spring.boot</groupId>
                  <artifactId>mybatis-spring-boot-starter</artifactId>
                  <version>2.2.0</version>
              </dependency>
              <dependency>
                  <groupId>mysql</groupId>
                  <artifactId>mysql-connector-java</artifactId>
                  <version>5.1.38</version>
              </dependency>
      • application.yml的配置如下:

      server:
        port: 8888
      
      spring:
        datasource:
          driver-class-name: com.mysql.jdbc.Driver
          url: jdbc:mysql://localhost:3306/project?useUnicode=true&characterEncoding=UTF8&zeroDateTimeBehavior=convertToNull&useSSL=false
          username: root
          password: 123456
      mybatis:
        type-aliases-package: com.songwp.snowflake.entity
        mapper-locations: classpath:mybatis/mapper/*.xml
        configuration:
          log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
      • 數(shù)據(jù)庫(kù)測(cè)試表

      -- ----------------------------
      -- Table structure for sys_dept
      -- 部門表
      -- ----------------------------
      DROP TABLE IF EXISTS `sys_dept`;
      CREATE TABLE `sys_dept`  (
        `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '部門ID',
        `user_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用戶ID',
        `dept_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '部門名稱',
        `parent_id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '父級(jí)部門ID',
        `parent_name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '父級(jí)部門名稱',
        `status` int(5) DEFAULT 0 COMMENT '部門狀態(tài):0-正常  1-禁用',
        PRIMARY KEY (`id`) USING BTREE
      ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact;
      
      -- ----------------------------
      -- Records of sys_dept
      -- ----------------------------
      INSERT INTO `sys_dept` VALUES ('5a8f893eedef4eafbc66feded3541c0f', '4117460f-20f7-47e7-bf8a-507a32880c06', '集團(tuán)本部', 'GS-001', '集團(tuán)本部', 0);
      INSERT INTO `sys_dept` VALUES ('6271dd03e426400b9fd001bae9074efc', '4117460f-20f7-47e7-bf8a-507a32880c06', '財(cái)務(wù)部門', 'GS-003', '集團(tuán)本部', 0);
      INSERT INTO `sys_dept` VALUES ('f33503159a084e73b4e1313932cc9629', '4117460f-20f7-47e7-bf8a-507a32880c06', '研發(fā)部門', 'GS-002', '集團(tuán)本部', 0);
      
      -- ----------------------------
      -- Table structure for sys_user
      -- 用戶表
      -- ----------------------------
      DROP TABLE IF EXISTS `sys_user`;
      CREATE TABLE `sys_user`  (
        `id` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '主鍵ID',
        `username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用戶名',
        `nickname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '真實(shí)姓名',
        `password` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '密碼',
        `gender` int(5) DEFAULT 1 COMMENT '性別:0-女  1-男',
        `age` int(5) DEFAULT NULL COMMENT '年齡',
        `phone` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '聯(lián)系電話',
        `address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '住址',
        `status` int(5) DEFAULT 0 COMMENT '用戶狀態(tài):0-正常  1-凍結(jié)  2- 已注銷',
        `birthday` date DEFAULT NULL COMMENT '生日',
        `create_time` datetime DEFAULT NULL COMMENT '添加時(shí)間',
        `create_user` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '創(chuàng)建人',
        `update_time` datetime DEFAULT NULL COMMENT '修改時(shí)間',
        `update_user` varchar(0) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '修改人',
        `remark` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '備注',
        PRIMARY KEY (`id`) USING BTREE
      ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Compact;
      
      -- ----------------------------
      -- Records of sys_user
      -- ----------------------------
      INSERT INTO `sys_user` VALUES ('4117460f-20f7-47e7-bf8a-507a32880c06', 'zs', '張三', '123456', 0, 25, '13888888888', '陜西西安', 0, '1996-05-07', '2022-03-28 10:17:54', '張三', NULL, NULL, NULL);
      INSERT INTO `sys_user` VALUES ('fb962a7f-3a61-4312-820c-9e67eefaa74a', 'zll', '趙老六', '123456', 1, 28, '13666666666', '陜西西安', 0, '1992-05-07', '2022-03-28 10:14:45', '趙老六', NULL, NULL, NULL);
      • @select注解中SQL的寫法

      假設(shè)我想用戶名(username)為“zs”和密碼(password)為“123456”的條件下用戶的信息和對(duì)應(yīng)部門的信息為例:

      SELECT
          u.username,
          u.PASSWORD,
          u.nickname,
          u.phone,
          u.gender,
          u.address,
          d.id AS dept_id,
          d.dept_name,
          d.STATUS AS dept_status 
      FROM
          sys_user u
          INNER JOIN sys_dept d ON u.id = d.user_id 
      WHERE
          u.username = 'zs' 
          AND u.PASSWORD = '123456'
      • Navicat中結(jié)果執(zhí)行如下:

      • mapper接口

      @Select("<script> SELECT " +
                  "u.username," +
                  "u.password," +
                  "u.nickname," +
                  "u.phone," +
                  "u.gender," +
                  "u.address," +
                  "d.id as dept_id," +
                  "d.dept_name," +
                  "d.status as dept_status " +
                  "from" +
                  " sys_user u" +
                  " inner join sys_dept d on u.id = d.user_id " +
                  " where u.username = #{username} <when test='password !=null'> " +
                  " and u.password = #{password} </when> </script>")
          List<Map> getByParmsMap(String username, String password);
      1、@Select注解基本用法
      @Select注解的目的是為了取代xml中的select標(biāo)簽,只作用于方法上面。下面看一下@Select注解的源碼介紹:
      
      @Retention(RetentionPolicy.RUNTIME)
      @Target(ElementType.METHOD)
      public @interface Select
      {
          String[] value();
      }
      
      從上述可以看到兩點(diǎn)信息:
      
      (1)@Select注解只能修飾方法
      (2)@Select注解的值是字符數(shù)組。
      
      所以,@Select注解的用法是這樣的:
      
      @Select({ "select * from xxx", "select * from yyy" })
      Person selectPersonById(Integer id);
      
      雖然@Select注解的值是字符數(shù)組,但是真正生效的應(yīng)該是最后那條SQL語(yǔ)句。這一點(diǎn)請(qǐng)大家要留意一下。
      
      2、@Select注解動(dòng)態(tài)SQL拼寫
      普通的字符串值,只能實(shí)現(xiàn)變量的替換功能,如下所示,
      
      @Select("select * from t_person where id = #{id}")
      Person selectPersonById(Integer id);
      如果要想實(shí)現(xiàn)復(fù)雜的邏輯判斷,則需要使用標(biāo)簽,如下所示: @Select("<script> select * from t_person where id = #{id} <when test='address !=null'> and address = #{address} </when> </script>") Person selectPersonById(Integer id); 其實(shí),標(biāo)簽并非是@Select注解專用的,其他的注解,例如@Insert,@Update等等,都可以使用的。
      • 業(yè)務(wù)層service接口

      List<Map> getByParmsMap(String username, String password);
      • 業(yè)務(wù)實(shí)現(xiàn)類的方法

      public List<Map> getByParmsMap(String username, String password) {
              return userMapper.getByParmsMap(username,password);
       }
      • 控制器controller方法

      @RequestMapping(value = {"/getByParmsMap"}, method = RequestMethod.GET)
      @ResponseBody
      public List<Map> getByParmsMap(@RequestParam("username")String username,@RequestParam("password")String password){
          return userService.getByParmsMap(username,password);
      }
      • Postman接口調(diào)用如下

      [
          {
              "password": "123456",
              "address": "陜西西安",
              "gender": 0,
              "phone": "13888888888",
              "nickname": "張三",
              "dept_name": "集團(tuán)本部",
              "dept_status": 0,
              "dept_id": "5a8f893eedef4eafbc66feded3541c0f",
              "username": "zs"
          },
          {
              "password": "123456",
              "address": "陜西西安",
              "gender": 0,
              "phone": "13888888888",
              "nickname": "張三",
              "dept_name": "財(cái)務(wù)部門",
              "dept_status": 0,
              "dept_id": "6271dd03e426400b9fd001bae9074efc",
              "username": "zs"
          },
          {
              "password": "123456",
              "address": "陜西西安",
              "gender": 0,
              "phone": "13888888888",
              "nickname": "張三",
              "dept_name": "研發(fā)部門",
              "dept_status": 0,
              "dept_id": "f33503159a084e73b4e1313932cc9629",
              "username": "zs"
          }
      ]
      • 如下圖所示:

      posted @ 2022-04-01 11:46  [奮斗]  閱讀(1179)  評(píng)論(0)    收藏  舉報(bào)
      主站蜘蛛池模板: 午夜成人无码免费看网站| 国内少妇偷人精品免费| 日韩国产av一区二区三区精品| 国产一区二区日韩在线| 精品九九人人做人人爱| 无码精品一区二区三区在线| 亚洲国产精品第一二三区| 亚洲国产色一区二区三区| 一本久久a久久精品综合| 成人自拍小视频免费观看| 亚洲精品日本一区二区| 中文字幕有码无码AV| 国产最大的福利精品自拍| 色九月亚洲综合网| 久久久久无码中| 久久中文字幕av第二页| 亚洲av成人一区在线| 察哈| 国产精品国产三级国产专业| 日韩av综合中文字幕| 久久99精品久久久久久9| 老司机亚洲精品一区二区| 色九月亚洲综合网| 国产精品日韩av在线播放| 欧美丰满熟妇xxxx性ppx人交| 在线观看热码亚洲AV每日更新| 国产一级av在线播放| 无码天堂亚洲国产av麻豆| 日韩精品区一区二区三vr| 精品无码国产一区二区三区AV| 国产精品熟女一区二区三区| 国产69精品久久久久99尤物| 青草青草视频2免费观看| 国内自拍偷拍一区二区三区| 亚洲欧美日产综合在线网| 国产成人毛片无码视频软件| 婷婷四虎东京热无码群交双飞视频| 亚洲欧美在线综合一区二区三区| 久久99精品久久久久久青青| 熟妇人妻任你躁在线视频| 日本va欧美va欧美va精品|