`

mybatis如何直接执行传入的任意sql语句,并按照顺序取出查询的结果集

阅读更多

需求:

  在连接数据库的单元测试时,极可能为测试某个测试点需提前准备对应的测试数据,这时,就需要对数据库表进行初始化。在执行完测试后,有时也需要查询数据库表来验证是不是正常入库。且为了保持测试的校验完整性和现有的功能代码分开,应有自已的sqlmap和dao。

  1.直接执行前端传来的任何sql语句,parameterType="String",

  2.对于任何sql语句,其返回值类型无法用resultMap在xml文件里配置或者返回具体的bean类型,因此设置resultType="java.util.Map",但是Map并不保证存入取出顺序一致,

  因此设置resultType="java.util.LinkedHashMap",为保证查询的字段值有序(存入与取出顺序一致)所以采用LinkedHashMap。

mapper的接口方法:

 

import java.util.LinkedHashMap;
import java.util.List;

public interface JunitBaseDao {
    
    List<LinkedHashMap<String, Object>> select(String sql);
    int insert(String sql);
    int update(String sql);
    int delete(String sql);
}

相匹配的xml文件:

 

 

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="cn.webank.wfts.dao.JunitBaseDao" >

  <select id="select" parameterType="java.lang.String" resultType="java.util.LinkedHashMap">
  	${value}
  </select>
  
  <insert id="insert" parameterType="java.lang.String">
  	${value}
  </insert>
  
  <update id="update" parameterType="java.lang.String">
  	${value}
  </update>
  
  <delete id="delete" parameterType="java.lang.String">
    ${value}
  </delete>
</mapper>

 

参考文章:https://www.cnblogs.com/wuyun-blog/p/5769096.html

分享到:
评论

相关推荐

    mybatis直接执行sql语句后续之一

    这篇博客“mybatis直接执行sql语句后续之一”可能探讨了如何在MyBatis中高效且有效地执行SQL操作。下面我们将深入探讨MyBatis的SQL执行机制及相关知识点。 首先,MyBatis的核心组件是SqlSessionFactory,它是创建...

    详解MyBatis直接执行SQL查询及数据批量插入

    MyBatis是一个强大的持久层框架,它允许开发者直接编写SQL语句,简化了数据库操作。在本文中,我们将深入探讨如何使用MyBatis直接执行SQL查询以及如何进行数据的批量插入。 **一、直接执行SQL查询** 在MyBatis中,...

    mybatis 动态sql及参数传递

    在实际开发过程中,我们往往需要编写复杂的SQL语句,拼接稍有不注意就会导致错误,Mybatis给开发者提供了动态SQL,大大降低了拼接SQL导致的错误。 动态标签 if标签 if标签通常用那个胡where语句,update语句,insert...

    MyBatis 执行动态 SQL语句详解

    在 Java 代码中,我们不再需要传入整个 SQL 语句,而是直接传递查询参数: ```java Map, Object&gt; params = new HashMap(); params.put("enabled", 1); params.put("userName", "admin"); List&lt;Map&gt; list = xxMapper...

    MyBatis 3 _ SQL 语句构建器1

    MyBatis 3 的 SQL 语句构建器是其核心特性之一,它提供了一种更加优雅、可读性更强的方式来构建动态 SQL。SQL 语句构建器支持多种风格的 SQL 编写,包括匿名内部类风格、Builder/Fluent 风格以及动态条件构建。 1. ...

    mybatis查询入门(log4j控制台sql语句日记输出的)

    【标题】"mybatis查询入门(log4j控制台sql语句日记输出的)"涉及的知识点主要集中在MyBatis框架的基础使用以及如何通过Log4j在控制台输出SQL语句,以便于调试和优化数据库操作。MyBatis是一个轻量级的Java持久层框架...

    idea插件mybaits log 打印sql语句

    标题 "idea插件mybaits log 打印sql语句" 涉及的是一个针对IntelliJ IDEA的MyBatis日志插件,它的主要功能是帮助开发者在开发过程中实时查看并打印出MyBatis执行的SQL语句。这个功能对于调试和优化数据库查询非常...

    Mybatis Log(自动填充sql参数打印到控制台)

    Mybatis 是一个流行的Java持久层框架,它简化了数据库操作,允许开发者将SQL语句直接映射到Java方法。在开发过程中,为了调试和优化SQL性能,常常需要查看执行的SQL语句及其参数。Mybatis 提供了一种日志机制,能够...

    mybatis-demo11-动态SQL语句.zip

    在MyBatis中,动态SQL是其强大特性之一,允许开发者根据特定条件动态构建SQL语句。在本项目"mybatis-demo11-动态SQL语句.zip"中,我们将深入探讨如何在XML配置文件中使用MyBatis的动态SQL功能。 1. **什么是动态SQL...

    MyBatis学习之三动态SQL语句[借鉴].pdf

    【MyBatis动态SQL语句详解】 在MyBatis中,动态SQL是一种强大的功能,它允许我们在XML映射文件中根据不同的条件构建SQL语句,极大地提高了代码的灵活性和可维护性。本篇将深入探讨MyBatis的动态SQL语句,主要关注`...

    mybatis执行自定义sql工具包

    3. 在服务类或DAO中,使用`mybatis-helper`提供的API加载并执行SQL,如`SqlHelper.execute()`方法,该方法接受SQL模板ID和参数,返回结果集或影响行数。 4. 参数传递可以是Map对象,键值对应SQL语句中的占位符,也...

    mybatis-demo12-动态SQL语句2-基于注解配置.zip

    9. **SqlSession和ResultMap**: 在执行动态SQL时,我们需要使用SqlSession对象来执行Mapper接口中的方法,并通过ResultMap来定义返回结果的映射规则。 10. **最佳实践**: 使用动态SQL可以提高代码的灵活性,但同时...

    MyBatis连接SQLServer的小例子

    接着,定义一个Mapper接口,例如UserMapper,以及对应的XML映射文件(UserMapper.xml),用于编写SQL语句: ```java public interface UserMapper { User selectUser(int id); } ``` ```xml SELECT * FROM ...

    MyBatis拦截器分页与动态修改SQL及其参数值

    MyBatis是一个强大的Java持久层框架,它允许开发者将数据库操作与业务逻辑分离,通过XML或注解方式定义SQL语句。在某些场景下,我们可能需要对SQL进行动态修改或者实现分页功能,这时MyBatis的拦截器机制就显得尤为...

    mybatis动态sql语句详解

    动态SQL是MyBatis的一项强大特性,它允许根据传入的参数动态地构建SQL语句结构,从而提高SQL语句的灵活性和复用性。这对于处理复杂的查询场景尤其有用,例如根据不同的条件组合生成不同的查询语句等。 #### 三、...

    Java的MyBatis框架中实现多表连接查询和查询结果分页

    MyBatis是一个流行的Java持久层框架,它允许开发者将SQL语句直接集成到XML或注解形式的映射文件中,极大地简化了数据库操作。在处理多表连接查询和查询结果分页时,MyBatis提供了强大的动态SQL功能,使得这些复杂的...

    springmvc+mybatis+分页查询

    - **Mapper XML文件**:编写SQL语句和结果映射,可以进行复杂的查询和参数绑定。 - **SqlSession**:执行SQL的会话对象,通过SqlSessionFactory创建,用于执行增删改查操作。 - **ResultMap**:配置映射规则,将...

    mybatis教程之动态sql语句借鉴.pdf

    在实际开发中,我们常常遇到动态 SQL 的需求,即根据传入的参数来决定 SQL 语句的执行逻辑。本教程将深入讲解如何在 MyBatis 中使用动态 SQL 来处理这些情况。 动态 SQL 在 MyBatis 中主要通过 `&lt;if&gt;`、`&lt;choose&gt;`...

    Mybatis排序无效问题解决.doc

    在实际开发过程中,当尝试通过动态SQL的方式实现排序功能时,可能会遇到一个常见问题:使用`order by #{sortInfo}`进行排序时,发现查询结果并未按照预期排序。例如,若传入的排序参数为`empno desc`,则期望的结果...

    MyBatis基本了解

    MyBatis的主要目的是简化数据库操作,避免繁琐的JDBC代码和手动处理参数及结果集。它采用XML或注解的方式来配置和映射基础数据类型、Map接口以及POJO(Plain Old Java Object)到数据库记录,提供了一种半自动的ORM...

Global site tag (gtag.js) - Google Analytics