mybatis直接使用自定义sql查询数据
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查询数据相关推荐
- jpa常用查询方法使用总结自定义sql查询
文章目录 一.JPA自定义查询方法 实体类 1.1 单条件查询一条数据 1.2 单条件查询多条数据 1.3 多条件查询数据 1.4 查询某一个字段 1.5 in查询 1.6 like查询 二.自定义s ...
- java使用jdbc连接oracle,实现自定义sql查询,加载字段注释
java使用jdbc连接oracle,实现自定义sql查询,加载字段注释 第一步.加载驱动 引用包 import java.sql.Connection; import java.sql.Driver ...
- SQL查询数据并插入新表
SQL查询数据并插入新表 --如果接受数据导入的表已经存在 insert into 表 select * from tablename--如果导入数据并生成表 select * into 表 from ...
- 数据库实验三 SQL查询数据
实验三 SQL查询数据 实验目的 熟练掌握使用SQL查询语言.完成各类查询操作(单表查询,连接查询,嵌套查询,集合查询). 实验内容 现有一个单位内部的小型图书借阅系统,假设每本图书的数量无限制,并且 ...
- 工作流实战_27_flowable 自定义sql查询
项目地址:https://gitee.com/lwj/flowable.git 分支flowable-base 业务场景:在实际开发中,由于我们需要一些flowable的个性化查询,而且他们提供的ap ...
- 03 SQL查询数据 实验报告
03 SQL查询数据 实验报告 ...
- 实验三 SQL查询数据
SQL查询数据 一.实验目的 熟练掌握使用SQL查询语言.完成各类查询操作(单表查询,连接查询,嵌套查询,集合查询). 二.实验原理 基于数据库系统概论,熟悉实验环境,熟悉SQL查询数据等本次实验的基 ...
- mybatis一级缓存导致sql查询出现问题
如下代码: PubPsndoc pubdoc = pubPsndocDAOService.selectByPrimaryKey(in.id);pubdoc.setPkCorp(newpkcorp);p ...
- pythonpandas用sql查询数据表_pandas从数据库读取数据
因为本周有一个是需要使用pandos做一个数据分析的需求,所以在这里做一下记录. Python中用Pandas进行数据分析,最常用的就是Dataframe数据结构, 这里我们主要介绍Pandas如何读 ...
最新文章
- 文巾解题 557. 反转字符串中的单词 III
- 二叉树实现java,二叉树实现java
- 从UWP到SWIFT-开始
- Spring Data JPA 教程(翻译)
- ARM Cortex-M3初探
- HDU 2516 (Fabonacci Nim) 取石子游戏
- 【壹刊】Azure AD 保护的 ASP.NET Core Web API (下)
- hihocoder第238周:杨氏矩阵的个数
- C# 数组转换为DataTable 的三个方法
- 巨星陨落!图灵奖得主Edmund Clarke感染新冠逝世,教计算机自己检查错误的人走了...
- vscode java
- FFMpeg无损合并视频的多种方法
- 武汉市计算机学校报名条件,自主招生报名条件
- 【ELT.ZIP】OpenHarmony啃论文俱乐部——计算机视觉数据压缩应用
- Android Things:外设I/O接口-PWM
- 软件外包故事 - 术业有专攻
- 制作自己的ctpn数据集
- 模仿 Android支付宝咻一咻功能实现
- php无限分类之网站导航
- 关于DecimalFormat的取舍问题,DecimalFormat四舍五入的坑
热门文章
- python大数据分析实例-Python实现的大数据分析操作系统日志功能示例
- python下载的文件放在哪里的-python实现文件下载的方法总结
- python pandas 把数据保存成csv文件,以及读取csv文件获取指定行、指定列数据
- mysql新增json_MySQL5.7中新增的JSON类型的使用方法
- vs2017中报无法打开包括文件: corecrt.h: No such file or directory
- Linux中的top命令查看内存和cpu信息
- linux网络服务器框架转载
- 网络编程学习笔记(非阻塞connect)
- 在MRC模式下使用SDWebImage
- 远程代理模式-Remote Proxy(Java实现)