2019独角兽企业重金招聘Python工程师标准>>>

dao层,增加SqlMapper.java和 对应的SQLMapper.xml

package rg.contacts.mapper;import java.util.LinkedHashMap;
import java.util.List;import rg.contacts.vo.SqlVo;public interface SQLMapper {List<LinkedHashMap<String, Object>>  selectBysql(SqlVo sqlVo);
}
<?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="rg.contacts.mapper.SQLMapper"><!-- ##### 万能SQL原生映射  -zyh ##### --><select id="selectBysql" parameterType="rg.contacts.vo.SqlVo" resultType="java.util.LinkedHashMap">${sql}</select>
</mapper>

其中,使用 java.util.LinkedHashMap 作为返回类型,可以保持结果集本来的字段顺序。

为了避免出现 :there no getter sql in java.lang.String 的异常,需要将sql分装到SqlVo.java

package rg.contacts.vo;public class SqlVo {private String sql;public String getSql() {return sql;}public void setSql(String sql) {this.sql = sql;}}

如果不用sqlV封装的话,可以将mapper改为${value}:即可以不报错,也可以避免使用SqlVo.java

    <!-- ##### 万能SQL原生映射  -zyh ##### --><select id="selectBysql" parameterType="String" resultType="java.util.LinkedHashMap">${value}</select>

最后service的调用方式:

@Service
public class GiftServiceImpl implements GiftService {@Autowiredprivate SQLMapper sqlMapper;@Overridepublic List<LinkedHashMap<String, Object>> selectBySQL(Integer sqlStr) {// TODO Auto-generated method stubSqlVo sqlVo = new SqlVo();sqlVo.setSql(sqlStr);return sqlMapper.selectBysql(sqlVo);}}

为了避免出现值null的列,不能被保存到 LinkedHashMap对象 中,需要在mybatis 的配置文件中加如下配置:

<settings><!-- 调用setter null,返回空也必须设置到bean中  (直接执行sql专用)--><setting name="callSettersOnNulls" value="true"/>
</settings>

如果对您有帮助,请点赞

转载于:https://my.oschina.net/iyinghui/blog/1543438

mybatis直接使用自定义sql查询数据相关推荐

  1. jpa常用查询方法使用总结自定义sql查询

    文章目录 一.JPA自定义查询方法 实体类 1.1 单条件查询一条数据 1.2 单条件查询多条数据 1.3 多条件查询数据 1.4 查询某一个字段 1.5 in查询 1.6 like查询 二.自定义s ...

  2. java使用jdbc连接oracle,实现自定义sql查询,加载字段注释

    java使用jdbc连接oracle,实现自定义sql查询,加载字段注释 第一步.加载驱动 引用包 import java.sql.Connection; import java.sql.Driver ...

  3. SQL查询数据并插入新表

    SQL查询数据并插入新表 --如果接受数据导入的表已经存在 insert into 表 select * from tablename--如果导入数据并生成表 select * into 表 from ...

  4. 数据库实验三 SQL查询数据

    实验三 SQL查询数据 实验目的 熟练掌握使用SQL查询语言.完成各类查询操作(单表查询,连接查询,嵌套查询,集合查询). 实验内容 现有一个单位内部的小型图书借阅系统,假设每本图书的数量无限制,并且 ...

  5. 工作流实战_27_flowable 自定义sql查询

    项目地址:https://gitee.com/lwj/flowable.git 分支flowable-base 业务场景:在实际开发中,由于我们需要一些flowable的个性化查询,而且他们提供的ap ...

  6. 03 SQL查询数据 实验报告

                                                  03 SQL查询数据 实验报告                                       ...

  7. 实验三 SQL查询数据

    SQL查询数据 一.实验目的 熟练掌握使用SQL查询语言.完成各类查询操作(单表查询,连接查询,嵌套查询,集合查询). 二.实验原理 基于数据库系统概论,熟悉实验环境,熟悉SQL查询数据等本次实验的基 ...

  8. mybatis一级缓存导致sql查询出现问题

    如下代码: PubPsndoc pubdoc = pubPsndocDAOService.selectByPrimaryKey(in.id);pubdoc.setPkCorp(newpkcorp);p ...

  9. pythonpandas用sql查询数据表_pandas从数据库读取数据

    因为本周有一个是需要使用pandos做一个数据分析的需求,所以在这里做一下记录. Python中用Pandas进行数据分析,最常用的就是Dataframe数据结构, 这里我们主要介绍Pandas如何读 ...

最新文章

  1. 文巾解题 557. 反转字符串中的单词 III
  2. 二叉树实现java,二叉树实现java
  3. 从UWP到SWIFT-开始
  4. Spring Data JPA 教程(翻译)
  5. ARM Cortex-M3初探
  6. HDU 2516 (Fabonacci Nim) 取石子游戏
  7. 【壹刊】Azure AD 保护的 ASP.NET Core Web API (下)
  8. hihocoder第238周:杨氏矩阵的个数
  9. C# 数组转换为DataTable 的三个方法
  10. 巨星陨落!图灵奖得主Edmund Clarke感染新冠逝世,教计算机自己检查错误的人走了...
  11. vscode java
  12. FFMpeg无损合并视频的多种方法
  13. 武汉市计算机学校报名条件,自主招生报名条件
  14. 【ELT.ZIP】OpenHarmony啃论文俱乐部——计算机视觉数据压缩应用
  15. Android Things:外设I/O接口-PWM
  16. 软件外包故事 - 术业有专攻
  17. 制作自己的ctpn数据集
  18. 模仿 Android支付宝咻一咻功能实现
  19. php无限分类之网站导航
  20. 关于DecimalFormat的取舍问题,DecimalFormat四舍五入的坑

热门文章

  1. python大数据分析实例-Python实现的大数据分析操作系统日志功能示例
  2. python下载的文件放在哪里的-python实现文件下载的方法总结
  3. python pandas 把数据保存成csv文件,以及读取csv文件获取指定行、指定列数据
  4. mysql新增json_MySQL5.7中新增的JSON类型的使用方法
  5. vs2017中报无法打开包括文件: corecrt.h: No such file or directory
  6. Linux中的top命令查看内存和cpu信息
  7. linux网络服务器框架转载
  8. 网络编程学习笔记(非阻塞connect)
  9. 在MRC模式下使用SDWebImage
  10. 远程代理模式-Remote Proxy(Java实现)