mybatis如何直接执行传入的任意sql语句,并按照顺序取出查询的结果集
需求:
在连接数据库的单元测试时,极可能为测试某个测试点需提前准备对应的测试数据,这时,就需要对数据库表进行初始化。在执行完测试后,有时也需要查询数据库表来验证是不是正常入库。且为了保持测试的校验完整性和现有的功能代码分开,应有自已的sqlmap和dao。
1.直接执行前端传来的任何sql语句,parameterType="String",
2.对于任何sql语句,其返回值类型无法用resultMap在xml文件里配置或者返回具体的bean类型,因此设置resultType="java.util.Map",但是Map并不保证存入取出顺序一致,
因此设置resultType="java.util.LinkedHashMap",为保证查询的字段值有序(存入与取出顺序一致)所以采用LinkedHashMap。
mapper的接口方法:
1 2 3 4 5 6 7 8 9 | 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文件:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <!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> |

您的资助是我最大的动力!
金额随意,欢迎来赏!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)