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

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

创建数据表:admin_user、admin_groups

CREATE TABLE `admin_user` (
`id` bigint() NOT NULL AUTO_INCREMENT COMMENT '用户编号',
`user_name` varchar() NOT NULL COMMENT '用户登录账号',
`pwd` varchar() DEFAULT NULL COMMENT '登录密码',
`create_date` datetime DEFAULT NULL COMMENT '创建时间',
`enable_flag` int() DEFAULT NULL COMMENT '用户状态 0:可用 1:不可用',
`group_id` int() DEFAULT NULL COMMENT '分组ID,0超级管理员,1一般管理员',
`last_login_ip` varchar() DEFAULT NULL COMMENT '最后一次登录IP地址',
`last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间',
`login_count` int() DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `user_name` (`user_name`) USING BTREE
) ---------------------------------------------------------------------------------
CREATE TABLE `admin_groups` (
`id` int() NOT NULL AUTO_INCREMENT,
`group_name` varchar() DEFAULT NULL,
`create_by_user_name` varchar() DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
`update_time` datetime DEFAULT NULL,
`parent_id` int() DEFAULT NULL,
`remarks` varchar() NOT NULL DEFAULT '无' COMMENT '描述',
`enable_flag` int() NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
)

创建实体类:AdminUserJoinGroups.java

package com.palmble.entity;
import lombok.Data;
import javax.persistence.Table; @Table(name = "admin_user")
@Data
public class AdminUserJoinGroups {
private Long id;
private String userName;
private String groupName;
private String createByUserName;
}

service层:AdminUserService.java

@Service
public class AdminUserService { @Autowired
private AdminUserMapper adminUserMapper;
public List<AdminUserJoinGroups> selectAllList()
{
return adminUserMapper.selectAllList();
}
}

mapper层:AdminUserMapper.java

@Mapper
public interface AdminUserMapper { @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;")
@Results(id = "userGroupMap", value = {
@Result(id = true, column = "id", property = "id"),
@Result(column = "user_name", property = "userName"),
@Result(column = "group_name", property = "groupName"),
@Result(column = "create_by_user_name", property = "createByUserName")
})
List<AdminUserJoinGroups> selectAllList();
}

测试:

@RestController
@RequestMapping("/admin")
public class AdminController {
@Autowired
private AdminUserService adminUserService; @RequestMapping("/getUserGroup")
public String getUserGroup() {
List<AdminUserJoinGroups> adminUserJoinGroups = adminUserService.selectAllList();
StringBuilder sb = new StringBuilder();
for (AdminUserJoinGroups item : adminUserJoinGroups) {
sb.append("id=" + item.getId() + ",username=" + item.getUserName() + ",groupname=" + item.getGroupName() + ",createByUserName=" + item.getCreateByUserName());
}
return sb.toString();
}

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. Reporting Service 2016 匿名访问配置

    环境:SQL SERVER 2016 一.修改配置文件 需要修改的配置文件目录C:\Program Files\Microsoft SQL Server\MSRS13.MSSQLSERVER\Repo ...

  2. Kali中安装VMwaretools

    VMware Workstation 中 虚拟机选项,安装VMware Tools 选项. 在虚拟机中,打开VMware Tools,将 VMwareTools-10.1.15-6627299.tar ...

  3. Linux系统目录的学习

    1.在公司中linux 都是没有界面 2.系统路径    2.1 /表示根目录    2.2 ~表示/root    2.3etc:存放系统配置文件    2.4 home  除了root 以外所有用 ...

  4. 彻底理解JavaScript中的prototype、__proto__

    虽然在JavaScript里一切皆对象,但为了理解原型链系统,我们需要将JavaScript的对象分为对象和函数两大类.在此基础上,JavaScript的原型链逻辑遵从以下通用规则: 对象有__pro ...

  5. Spring IoC 详解(四)

    Spring IoC 概述 IoC:Inverse of Control(控制反转) 为了更好的理解用可以这样通俗易懂的这样讲:IOC主要是说是new一个类来使用,方式分为:开发这手动创建和Sprin ...

  6. IDEA使用 maven 搭建 SSM 框架

    文章目录 pom 文件的编写 项目结构 SSM 配置文件的编写 web.xml 的配置 总结 公司有个小的内部使用的软件,让开发,自己选择使用 SSM :因为之前自己学过,本以为一切水到渠成,但是好久 ...

  7. python 自学day1(关于if和file的应用练习)

    1.编写简单的登陆接口 #判断用户信息 #用户输入错误后锁定账号 流程图: 代码: #!/usr/bin/env python #-*- coding:utf-8 -*- document1 = op ...

  8. linux-删除一个目录下的所有文件,但保留某个或者多个指定文件

    Linux:删除一个目录下的所有文件,但保留一个指定文件 面试题:删除一个目录下的所有文件,但保留一个指定文件 解答: 假设这个目录是/xx/,里面有file1,file2,file3..file10 ...

  9. 复杂链表的复制——牛客offer

    题目描述: 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节点引用, ...

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

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