Mybatis多表实战案例(一)

简介: Mybatis多表实战案例

前言

花了一点时间整理了SQL的一些查询操作,包括分组查询、排序查询、case函数、自连接、内连接、外连接等,结合Mybatis完成了一个个的案例。

一、建立数据库

该数据库包含五张表,每张表都有多个字段,博主已经上传了数据库的相关资源。在正式开始前,博主需要交代几点。在mybatis中,无论你指定还是不指定返回类型,mybatis都会默认地先将查询完成后返回的值放入一个HashMap中(如果返回的值不止一条,就会放入一个包含HashMap的list集合中)。指定与不指定的区别在于,如果你指定了返回类型,mybatis将会根据返回类型的实体类来从HashMap中获取值并set到这个实体类中。如果不指定就默认返回HashMap(List>)。在查询时,你是否遇到查询表中的某些字段,会显示该表的所有信息?如何输出特定字段呢?大概有三种方法:


1、创建一些自己要用到的实体类,类中写自己要输出的字段,对应好即可


2、如果嫌写实体类麻烦,也可以不写,不写实体类系统就会自动创建HashMap来为你封装数据,我们就直接拿到这个map就可以了,可以用List>这种通用对象来接收Mybatis的查询结果。这种方法可以偷懒,我就是用这种方法偷的懒,但在博主实践的过程中,字段为null的时候好像不会输出,所以不是很推荐。这种不用写实体类的SQL操作,适用于字段和表名都是程序运行时产生的,实际上很多灵活性和扩展性要求比较高的应用,表的结构不能够确定,甚至连表名字都不确定,所以SQL语句和实体类映射字段不能被写死。


3、Mybatis plus提供了条件构造器,其中的queryWrapper可以实现查找指定字段。

二、案例实战

注:因为mysql不区分字段大小写,所以字段名往往会带下划线,如果要将数据库字段名与实体类对应上就需要在mybatis配置文件中开启驼峰命名

<settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

1、查询工资在10000到20000之间的员工名、工资以及奖金,并按工资从高到低排序

List<Map<Object, Object>> querySalary();
 <select id="querySalary" resultType="map">
        select first_name, salary, commission_pct
        from myemployees.employees
        where salary between 10000 and 20000
        order by salary desc
    </select>

结果: 从结果就可以看出来用List>的弊端了,没有奖金的员工不显示出他的奖金率。

2、 查询员工号为176的员工的姓名和部门号和年薪

Map<Object, Object> queryByID(@Param("id") int employee_id);
<select id="queryByID" resultType="map">
        SELECT CONCAT(first_name,last_name) 姓名,
               department_id 部门号,
               salary * 12 * (1 + IFNULL(commission_pct, 0)) 年薪
        FROM myemployees.employees
        WHERE employee_id = #{id};
    </select>

结果:

3、查询没有奖金,且工资小于18000员工的salary,first_name,并按工资从高到低排序

注:Mybatis中使用小于号需要用转义字符,"<","<"

 <select id="queryNoPct" resultType="map">
        select first_name 名字,salary 薪水
        from myemployees.employees
        where commission_pct is null and salary &lt;18000 order by salary desc
    </select>

结果:

4、案例如下:/*现公司出台一个政策,即要给员工的工资进行一个评级,评级状况如下:

*      工资大于20000的,评级为A级别

*      工资大于15000的,评级为B级别

*      工资大于10000的,评级为C级别

*      工资小于10000的,均评级为D级别

*      要求:输出员工的姓名,工资和工资评级状况,按工资高到低输出

* */

<select id="queryByRank" resultType="map">
        select CONCAT(first_name,' ',last_name) 姓名,salary 工资,
            CASE
                    when salary>20000 then 'A级别'
                    when salary>15000 then 'B级别'
                    when salary>10000 then 'C级别'
                    else 'D级别' end as 工资级别
        from myemployees.employees
        order by salary desc
    </select>

结果: 107条记录还是挺多的哈,截不全请见谅!

相关文章
|
7月前
Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
Mybatis+mysql动态分页查询数据案例——测试类HouseDaoMybatisImplTest)
|
16天前
|
SQL Java 数据库连接
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
MyBatis-Plus是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。本文讲解了最新版MP的使用教程,包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段等核心功能。
【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段
|
2月前
|
前端开发 Java Apache
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
本文详细讲解了如何整合Apache Shiro与Spring Boot项目,包括数据库准备、项目配置、实体类、Mapper、Service、Controller的创建和配置,以及Shiro的配置和使用。
375 1
Springboot整合shiro,带你学会shiro,入门级别教程,由浅入深,完整代码案例,各位项目想加这个模块的人也可以看这个,又或者不会mybatis-plus的也可以看这个
|
2月前
|
缓存 Java 数据库连接
使用MyBatis缓存的简单案例
MyBatis 是一种流行的持久层框架,支持自定义 SQL 执行、映射及复杂查询。本文介绍了如何在 Spring Boot 项目中集成 MyBatis 并实现一级和二级缓存,以提高查询性能,减少数据库访问。通过具体的电商系统案例,详细讲解了项目搭建、缓存配置、实体类创建、Mapper 编写、Service 层实现及缓存测试等步骤。
|
4月前
|
Java 数据库连接 Spring
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
文章是关于Spring、SpringMVC、Mybatis三个后端框架的超详细入门教程,包括基础知识讲解、代码案例及SSM框架整合的实战应用,旨在帮助读者全面理解并掌握这些框架的使用。
后端框架入门超详细 三部曲 Spring 、SpringMVC、Mybatis、SSM框架整合案例 【爆肝整理五万字】
|
7月前
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
Mybatis+mysql动态分页查询数据案例——工具类(MybatisUtil.java)
|
4月前
|
SQL Java 数据库连接
Spring Boot联手MyBatis,打造开发利器:从入门到精通,实战教程带你飞越编程高峰!
【8月更文挑战第29天】Spring Boot与MyBatis分别是Java快速开发和持久层框架的优秀代表。本文通过整合Spring Boot与MyBatis,展示了如何在项目中添加相关依赖、配置数据源及MyBatis,并通过实战示例介绍了实体类、Mapper接口及Controller的创建过程。通过本文,你将学会如何利用这两款工具提高开发效率,实现数据的增删查改等复杂操作,为实际项目开发提供有力支持。
216 0
|
6月前
|
SQL Java 数据库连接
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
2万字实操案例之在Springboot框架下基于注解用Mybatis开发实现基础操作MySQL之预编译SQL主键返回增删改查
78 2
|
5月前
|
XML Java 数据格式
支付系统----微信支付20---创建案例项目--集成Mybatis-plus的补充,target下只有接口的编译文件,xml文件了,添加日志的写法
支付系统----微信支付20---创建案例项目--集成Mybatis-plus的补充,target下只有接口的编译文件,xml文件了,添加日志的写法
|
6月前
|
存储 Java 数据库连接
SSMP整合案例第三步 业务层service开发及基于Mybatis的接口功能拓展
SSMP整合案例第三步 业务层service开发及基于Mybatis的接口功能拓展
38 0