今天来聊mybatis的join查询,怎么说呢,有的时候,join查询确实能提升查询效率,今天举个left join的例子,来看看mybatis的join查询。

就不写的很细了,把主要代码贴出来了。

创建数据表:admin_user、admin_groups

  1. CREATE TABLE `admin_user` (
  2. `id` bigint() NOT NULL AUTO_INCREMENT COMMENT '用户编号',
  3. `user_name` varchar() NOT NULL COMMENT '用户登录账号',
  4. `pwd` varchar() DEFAULT NULL COMMENT '登录密码',
  5. `create_date` datetime DEFAULT NULL COMMENT '创建时间',
  6. `enable_flag` int() DEFAULT NULL COMMENT '用户状态 0:可用 1:不可用',
  7. `group_id` int() DEFAULT NULL COMMENT '分组ID,0超级管理员,1一般管理员',
  8. `last_login_ip` varchar() DEFAULT NULL COMMENT '最后一次登录IP地址',
  9. `last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间',
  10. `login_count` int() DEFAULT NULL,
  11. PRIMARY KEY (`id`),
  12. UNIQUE KEY `user_name` (`user_name`) USING BTREE
  13. )
  14.  
  15. ---------------------------------------------------------------------------------
  16. CREATE TABLE `admin_groups` (
  17. `id` int() NOT NULL AUTO_INCREMENT,
  18. `group_name` varchar() DEFAULT NULL,
  19. `create_by_user_name` varchar() DEFAULT NULL,
  20. `create_time` datetime DEFAULT NULL,
  21. `update_time` datetime DEFAULT NULL,
  22. `parent_id` int() DEFAULT NULL,
  23. `remarks` varchar() NOT NULL DEFAULT '无' COMMENT '描述',
  24. `enable_flag` int() NOT NULL DEFAULT '',
  25. PRIMARY KEY (`id`)
  26. )

创建实体类:AdminUserJoinGroups.java

  1. package com.palmble.entity;
  2. import lombok.Data;
  3. import javax.persistence.Table;
  4.  
  5. @Table(name = "admin_user")
  6. @Data
  7. public class AdminUserJoinGroups {
  8. private Long id;
  9. private String userName;
  10. private String groupName;
  11. private String createByUserName;
  12. }

service层:AdminUserService.java

  1. @Service
  2. public class AdminUserService {
  3.  
  4. @Autowired
  5. private AdminUserMapper adminUserMapper;
  6. public List<AdminUserJoinGroups> selectAllList()
  7. {
  8. return adminUserMapper.selectAllList();
  9. }
  10. }

mapper层:AdminUserMapper.java

  1. @Mapper
  2. public interface AdminUserMapper {
  3.  
  4. @Select(" SELECT u.id,user_name,g.group_name,g.create_by_user_name FROM admin_user u left join admin_groups g on u.group_id=g.id;")
  5. @Results(id = "userGroupMap", value = {
  6. @Result(id = true, column = "id", property = "id"),
  7. @Result(column = "user_name", property = "userName"),
    @Result(column = "group_name", property = "groupName"),
  8. @Result(column = "create_by_user_name", property = "createByUserName")
  9. })
  10. List<AdminUserJoinGroups> selectAllList();
  11. }

测试:

  1. @RestController
  2. @RequestMapping("/admin")
  3. public class AdminController {
  4. @Autowired
  5. private AdminUserService adminUserService;
  6.  
  7. @RequestMapping("/getUserGroup")
  8. public String getUserGroup() {
  9. List<AdminUserJoinGroups> adminUserJoinGroups = adminUserService.selectAllList();
  10. StringBuilder sb = new StringBuilder();
  11. for (AdminUserJoinGroups item : adminUserJoinGroups) {
  12. sb.append("id=" + item.getId() + ",username=" + item.getUserName() + ",groupname=" + item.getGroupName() + ",createByUserName=" + item.getCreateByUserName());
  13. }
  14. return sb.toString();
  15. }

09—mybatis注解配置join查询的更多相关文章

  1. Mybatis注解开发模糊查询

    Mybatis注解开发模糊查询 一般在使用mybatis时都是采用xml文件保存sql语句 这篇文章讲一下在使用mybatis的注解开发时,如何进行模糊查询 模糊查询语句写法(在@Select注解中) ...

  2. MyBatis 注解配置及动态SQL

      一.注解配置 目前MyBatis支持注解配置,用注解方式来替代映射文件,但是注解配置还是有点不完善,在开发中使用比较少,大部分的企业还是在用映射文件来进行配置.不完善的地方体现在于当数据表中的字段 ...

  3. 阶段3 1.Mybatis_03.自定义Mybatis框架_7.自定义Mybatis的编码-实现基于注解配置的查询所有

    注解的方式,这里进行修改.上面注释的是原来xml的方式. 在dao类里面加上注解 创建注解类 声明注解的生命周期为Runntime 改变注解出现的位置,在Mehtod方法上 写完之后这里就不报错了. ...

  4. 08—mybatis注解配置二

    动态sql mybatis的注解也支持动态sql.mybatis提供了各种注解,如@InsertProvider.@UpdateProvider.@DeleteProvider和@SelectProv ...

  5. Spring Boot中使用MyBatis注解配置详解(1)

    之前在Spring Boot中整合MyBatis时,采用了注解的配置方式,相信很多人还是比较喜欢这种优雅的方式的,也收到不少读者朋友的反馈和问题,主要集中于针对各种场景下注解如何使用,下面就对几种常见 ...

  6. Spring Boot中使用MyBatis注解配置详解

    传参方式 下面通过几种不同传参方式来实现前文中实现的插入操作. 使用@Param 在之前的整合示例中我们已经使用了这种最简单的传参方式,如下: @Insert("INSERT INTO US ...

  7. 07—mybatis注解配置一

    常用注解Select:映射查询的sql语句.SelectProvider:Select语句的动态sql映射.允许指定一个类名和一个方法在执行时返回运行的查询语句.有两个属性:type和mehtod,t ...

  8. Spring Boot教程(三十九)使用MyBatis注解配置详解(2)

    增删改查 MyBatis针对不同的数据库操作分别提供了不同的注解来进行配置,在之前的示例中演示了@Insert,下面针对User表做一组最基本的增删改查作为示例: public interface U ...

  9. Spring Boot教程(三十八)使用MyBatis注解配置详解(1)

    之前在Spring Boot中整合MyBatis时,采用了注解的配置方式,相信很多人还是比较喜欢这种优雅的方式的,也收到不少读者朋友的反馈和问题,主要集中于针对各种场景下注解如何使用,下面就对几种常见 ...

随机推荐

  1. java中整数的默认为int类型的一些问题

    thingking in java 读书感悟 作者 :淮左白衣 写于2018年4月8日17:51:44 关于整数的默认类型,以及会产生的一些小问题 涉及基本数据类型的重载 关于整数的默认类型,以及会产 ...

  2. 【Docker】:docker安装ELK(logstash,elasticsearch,kibana)

    一:安装logstash 1.拉取镜像 docker pull logstash:5.6.11 2.创建目录 mkdir /docker/logstash cd /docker/logstash 3. ...

  3. 【C++札记】命名空间(namespace)

    介绍 命名空间可以解决程序中的同名冲突,尤其大型项目多人开发中经常用到.比如我们使用C++的标准输出std::cout就使用了std命名空间. 使用作用域符:: #include <iostre ...

  4. Solr介绍 入门练习

    1.1 Solr是什么 Solr是一个基于全文检索的企业级应用服务器. 全文检索:可以输入一段文字,通过分词检索数据!!(复习) 应用服务器:它是单独的服务. 1.2 Solr能做什么 它就是用于做全 ...

  5. Zuma CodeForces - 607B (区间DP)

    大意: 给定字符串, 每次删除一个回文子串, 求最少多少次删完. #include <iostream> #include <cstdio> #define REP(i,a,n ...

  6. Yet Another Problem On a Subsequence CodeForces - 1000D (组合计数)

    大意:定义一个长为$k>1$且首项为$k-1$的区间为好区间. 定义一个能划分为若干个好区间的序列为好序列. 给定序列$a$, 求有多少个子序列为好序列. 刚开始一直没想出来怎么避免重复计数, ...

  7. LOJ2557 CTSC2018组合数问题(提交答案)

    直接利用simulator退火应该可以得到大量分数. op=1:1,4,5,6,10 即构造序列{ai},最小化Σti,ai+rai,aj. 1:暴搜/退火. 4:观察到图大致成一条链(注意其中有两个 ...

  8. Python中操作mysql的pymysql模块详解(转载)

    https://www.cnblogs.com/wt11/p/6141225.html

  9. (十三)Activitivi5之流程控制网关:并行

    一.概念 所谓排他网关 顾名思义 执行到该网关,会有多条线路同时并行执行,当都执行完才继续执行后面的: 二. 案例 此时当“学生请假”任务节点完成之后,如下图此时有两个任务,必须等到两个任务都完成才会 ...

  10. (二十一)SpringBoot之集成mybatis:使用mybatis xml

    一.引入maven依赖 <dependencies> <dependency> <groupId>org.springframework.boot</grou ...