09—mybatis注解配置join查询
今天来聊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查询的更多相关文章
- Mybatis注解开发模糊查询
Mybatis注解开发模糊查询 一般在使用mybatis时都是采用xml文件保存sql语句 这篇文章讲一下在使用mybatis的注解开发时,如何进行模糊查询 模糊查询语句写法(在@Select注解中) ...
- MyBatis 注解配置及动态SQL
一.注解配置 目前MyBatis支持注解配置,用注解方式来替代映射文件,但是注解配置还是有点不完善,在开发中使用比较少,大部分的企业还是在用映射文件来进行配置.不完善的地方体现在于当数据表中的字段 ...
- 阶段3 1.Mybatis_03.自定义Mybatis框架_7.自定义Mybatis的编码-实现基于注解配置的查询所有
注解的方式,这里进行修改.上面注释的是原来xml的方式. 在dao类里面加上注解 创建注解类 声明注解的生命周期为Runntime 改变注解出现的位置,在Mehtod方法上 写完之后这里就不报错了. ...
- 08—mybatis注解配置二
动态sql mybatis的注解也支持动态sql.mybatis提供了各种注解,如@InsertProvider.@UpdateProvider.@DeleteProvider和@SelectProv ...
- Spring Boot中使用MyBatis注解配置详解(1)
之前在Spring Boot中整合MyBatis时,采用了注解的配置方式,相信很多人还是比较喜欢这种优雅的方式的,也收到不少读者朋友的反馈和问题,主要集中于针对各种场景下注解如何使用,下面就对几种常见 ...
- Spring Boot中使用MyBatis注解配置详解
传参方式 下面通过几种不同传参方式来实现前文中实现的插入操作. 使用@Param 在之前的整合示例中我们已经使用了这种最简单的传参方式,如下: @Insert("INSERT INTO US ...
- 07—mybatis注解配置一
常用注解Select:映射查询的sql语句.SelectProvider:Select语句的动态sql映射.允许指定一个类名和一个方法在执行时返回运行的查询语句.有两个属性:type和mehtod,t ...
- Spring Boot教程(三十九)使用MyBatis注解配置详解(2)
增删改查 MyBatis针对不同的数据库操作分别提供了不同的注解来进行配置,在之前的示例中演示了@Insert,下面针对User表做一组最基本的增删改查作为示例: public interface U ...
- Spring Boot教程(三十八)使用MyBatis注解配置详解(1)
之前在Spring Boot中整合MyBatis时,采用了注解的配置方式,相信很多人还是比较喜欢这种优雅的方式的,也收到不少读者朋友的反馈和问题,主要集中于针对各种场景下注解如何使用,下面就对几种常见 ...
随机推荐
- java中整数的默认为int类型的一些问题
thingking in java 读书感悟 作者 :淮左白衣 写于2018年4月8日17:51:44 关于整数的默认类型,以及会产生的一些小问题 涉及基本数据类型的重载 关于整数的默认类型,以及会产 ...
- 【Docker】:docker安装ELK(logstash,elasticsearch,kibana)
一:安装logstash 1.拉取镜像 docker pull logstash:5.6.11 2.创建目录 mkdir /docker/logstash cd /docker/logstash 3. ...
- 【C++札记】命名空间(namespace)
介绍 命名空间可以解决程序中的同名冲突,尤其大型项目多人开发中经常用到.比如我们使用C++的标准输出std::cout就使用了std命名空间. 使用作用域符:: #include <iostre ...
- Solr介绍 入门练习
1.1 Solr是什么 Solr是一个基于全文检索的企业级应用服务器. 全文检索:可以输入一段文字,通过分词检索数据!!(复习) 应用服务器:它是单独的服务. 1.2 Solr能做什么 它就是用于做全 ...
- Zuma CodeForces - 607B (区间DP)
大意: 给定字符串, 每次删除一个回文子串, 求最少多少次删完. #include <iostream> #include <cstdio> #define REP(i,a,n ...
- Yet Another Problem On a Subsequence CodeForces - 1000D (组合计数)
大意:定义一个长为$k>1$且首项为$k-1$的区间为好区间. 定义一个能划分为若干个好区间的序列为好序列. 给定序列$a$, 求有多少个子序列为好序列. 刚开始一直没想出来怎么避免重复计数, ...
- LOJ2557 CTSC2018组合数问题(提交答案)
直接利用simulator退火应该可以得到大量分数. op=1:1,4,5,6,10 即构造序列{ai},最小化Σti,ai+rai,aj. 1:暴搜/退火. 4:观察到图大致成一条链(注意其中有两个 ...
- Python中操作mysql的pymysql模块详解(转载)
https://www.cnblogs.com/wt11/p/6141225.html
- (十三)Activitivi5之流程控制网关:并行
一.概念 所谓排他网关 顾名思义 执行到该网关,会有多条线路同时并行执行,当都执行完才继续执行后面的: 二. 案例 此时当“学生请假”任务节点完成之后,如下图此时有两个任务,必须等到两个任务都完成才会 ...
- (二十一)SpringBoot之集成mybatis:使用mybatis xml
一.引入maven依赖 <dependencies> <dependency> <groupId>org.springframework.boot</grou ...