mybatis如何直接执行传入的任意sql语句,并按照顺序取出查询的结果集
程序员文章站
2022-07-13 16:46:18
...
需求:
在连接数据库的单元测试时,极可能为测试某个测试点需提前准备对应的测试数据,这时,就需要对数据库表进行初始化。在执行完测试后,有时也需要查询数据库表来验证是不是正常入库。且为了保持测试的校验完整性和现有的功能代码分开,应有自已的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>
上一篇: 2020-10-29
下一篇: 广告