mybatis一个<select>标签中包含多个语句

大家好,我是一名从事与java开发的小弟,在springboot项目中,遇到了一个接口需要去查询多次数据库中的同一张表,并将多次与数据库交互返回的数据封装到一起的情况;由于查询同一张表的条件不同,只能这样实现,这种方式大大的浪费了时间和资源,所以我想能不能只需要和数据库交互一次,就可以实现。所以我想能不能在<select>标签中包含多个语句然后返回一个集合形式,答案是可以的。

下边是我的实现方式:

mapper.xml


<resultMap id="id01" type="表a的返回值类型"/>
<resultMap id="id02" type="表a的返回值类型"/>

<select id="find" resultMap="id01,id02">
        SELECT * FROM 表a where name = ${name1};
        SELECT * FROM 表a where name = ${name2};
    </select>

mapper接口

List<对象a的数据类型> find(@Param("条件1")String name1,@Param("条件2")String name2);

ServiceImpl.java

List<对象a的数据类型> list = this.mapper.find(name1,name2);

以上就是我是实现方式,有不懂或疑问可以在评论区留言,一直在!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis in action之四实现关联数据的查询 mybatis实战教程mybatis in action之五与spring3集成附源码 mybatis实战教程mybatis in action之六与Spring MVC 的集成 mybatis实战教程mybatis in action之七实现mybatis分页源码下载 mybatis实战教程mybatis in action之八mybatis 动态sql语句 mybatis实战教程mybatis in action之九mybatis 代码生成工具的使用 mybatis SqlSessionDaoSupport的使用附代码下载 转自:http://www.yihaomen.com/article/java/302.htm (读者注:其实这个应该叫做很基础的入门一下下,如果你看过Hibernate了那这个就非常的简单) (再加一条,其实大家可以看官方的教程更好些:http://mybatis.github.io/mybatis-3/,而且如果英文不是很好的那就看文的:http://mybatis.github.io/mybatis-3/zh/sqlmap-xml.html) 写在这个系列前面的话: 以前曾经用过ibatis,这是mybatis的前身,当时在做项目时,感觉很不错,比hibernate灵活。性能也比hibernate好。而且也比较轻量级,因为当时在项目,没来的及做很很多笔记。后来项目结束了,我也没写总结文档。已经过去好久了。但最近突然又对这个ORM 工具感兴趣。因为接下来自己的项目很有可能采用这个ORM工具。所以在此重新温习了一下 mybatis, 因此就有了这个系列的 mybatis 教程. 什么是mybatis MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点: 1. 从配置文件(通常是XML配置文件)得到 sessionfactory. 2. 由sessionfactory 产生 session 3. 在session 完成对数据的增删改查和事务提交等. 4. 在用完之后关闭session 。 5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。 mybatis实战教程(mybatis in action)之一:开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包。这些软件工具均可以到各自的官方网站上下载。 首先建立一个名字为 MyBaits 的 dynamic web project 1. 现阶段,你可以直接建立java 工程,但一般都是开发web项目,这个系列教程最后也是web的,所以一开始就建立web工程。 2. 将 mybatis-3.2.0-SNAPSHOT.jar,mysql-connector-java-5.1.22-bin.jar 拷贝到 web工程的lib目录. 3. 创建mysql 测试数据库和用户表,注意,这里采用的是 utf-8 编码 创建用户表,并插入一条测试数据 程序代码 程序代码 Create TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(50) DEFAULT NULL, `userAge` int(11) DEFAULT NULL, `userAddress` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; Insert INTO `user` VALUES ('1', 'summer', '100', 'shanghai,pudong'
学习笔记——mybatis的起步(1) 1.什么是框架? 他是我们软件开发的一套解决方案,不同的框架解决的是不同的问题。 使用框架的好处: 框架封装了很多的细节,使开发者可以使用极简的方式实现功能。大大提高开发效率。 2.三层架构 表现层: 是用于展示数据的 业务层: 是处理业务需求的 持久层: 是和数据库交互的 3.持久层的技术解决方案 JDBC技术: Connection PreparedStatement ResultSet Spring的JdbcTemplate: Spring对jdbc的简单封装 Apache的DBUtils: 它和Spring的JdbcTemplate很想,也是对Jdbc的简单封装 以上这些都不是框架 JDBC是规范 Spring的JdbcTemplate和Apache的DBUtils都只是工具类 4.mybatis的概述 mybatis一个持久层框架,用java编写的。 它封装了jdbc操作的很多细节,开发者只需要关注sql语句本身,无需关注注册驱动,创建连接等繁杂过程 它使用了ORM思想实现了结果集的封装。 ORM: Object Relational Mappinng 对象关系映射 简单的说: 就是把数据库表和实体类及实体类的属性对应起来 让我们可以操作实体类就实现操作数据库表。 user User id userId user_name userName 今天我们需要做到 实体类的属性和数据库表的字段名称保持一致 user User id id user_name user_name 5.mybatis的入门 mybatis的环境搭建 第一步:创建maven工程并导入坐标 第二步:创建实体类和dao接口 第三步:创建Mybatis的主配置文件 sqlMapConfig.xml 第四步:创建映射配置文件 IUserDao.xml 环境搭建的注意事项: 第一个:创建IUserDao.xml 和 IUserDao.java 时名称是为了和我们之前的只是保持一致。 在Mybatis它把持久层的接口名称和映射文件叫做:Mapper 所以:IUserDao 和 IUsrMapper 是一样的 第二个:在idea创建目录的时候,它的包是不一样的 包在创建时:com.itheima.dao它是三级结构 目录在创建时:com.itheima.dao是一级目录 第三个:mybatis的映射配置文件位置必须和到接口的包结构相同 第四个:映射配置文件的mapper标签namespace属性的取值必须是dao接口的全限定类名 第五个:映射配置文件的操作配置(select),id属性的取值必须是dao接口的方法名 当我们遵从了第三、四、五之后,我们在开发就无需再写dao的实现了。 mybatis的入门案列
<> 标签MyBatis 的一种条件判断标签,类似于 Java 的 switch 语句,可以根据不同的条件匹配不同的 SQL 语句。它可以包含多个 <when> 标签一个可选的 <otherwise> 标签。 <choose> 标签的语法如下: ``` <choose> <when test="condition1"> <!-- SQL statement 1 --> </when> <when test="condition2"> <!-- SQL statement 2 --> </when> <when test="condition3"> <!-- SQL statement 3 --> </when> <otherwise> <!-- default SQL statement --> </otherwise> </choose> ``` 其,test 属性表示条件表达式,满足条件表达式的 SQL 语句会被执行,否则执行 <otherwise> 标签的 SQL 语句。可以包含多个 <when> 标签,只有第一个满足条件的 <when> 标签的 SQL 语句会被执行,其他的 <when> 标签会被忽略。 例如,以下是一个根据不同情况查询员工信息的 SQL 语句: ``` <select id="getEmployee" parameterType="int" resultType="Employee"> SELECT * FROM employee <where> <choose> <when test="deptId != null"> AND dept_id = #{deptId} </when> <when test="jobTitle != null"> AND job_title = #{jobTitle} </when> <otherwise> AND employee_id = #{employeeId} </otherwise> </choose> </where> </select> ``` 以上 SQL 语句,使用了 <choose> 标签来判断查询条件,当传入参数的 deptId 不为空时,执行 AND dept_id = #{deptId} 的 SQL 语句;当传入参数的 jobTitle 不为空时,执行 AND job_title = #{jobTitle} 的 SQL 语句;否则执行 AND employee_id = #{employeeId} 的 SQL 语句

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值