Mybatis 直接执行SQL

原创 2016年06月02日 00:33:12

Mybatis 直接执行SQL

好久不更新博客了,今天开发遇到一个问题就是如何在mybatis中直接执行sql,直接上代码:

<select id="selectBysql" parameterType="java.lang.String"   resultType="java.lang.Integer">
    ${sql}//#{sql}
</select>

上网查了下,网上的解释是:

  • 使用${}代替#{}

解释是:默认情况下, #{}语法会促使MyBatis生成PreparedStatement属性并且使用PreparedStatement的参数(=?)来设置值。如果你想直接将未更改的字符串代入到sql中,可以使用${}也就是说,MyBatis看到 “#{}”会认为你在给sql中的变量赋值,就像JDBC编程中给问号赋值一样(比如MyBatis会判断它的类型,并自动在前后加单引号。而当MyBatis看到”${}”的时候会直接将之替换成变量的值而不做任何处理。所以在使用${}的时候,不需要像#{}一样写”jdbcType=VARCHAR”之类的属性。

但是这样做会报错说:sql没有getter方法

解决办法就是,把sql放到一个vo里面去,用getter取出来在MyBatis中赋值就可以了,如下:

<select id="selectBysql" parameterType="com.tuniu.car.data.center.monitor.vo.SqlVo" resultType="java.lang.Integer">
    ${sql}
</select>

其中 com.tuniu.car.data.center.monitor.vo.SqlVo 是:

public class SqlVo {
    private String sql;

    public String getSql() {
        return sql;
    }

    public void setSql(String sql) {
        this.sql = sql;
    }

}

使用的时候,只要

SqlVo sql = new SqlVo();
sql.setSql(sqlString);

然后在 Mapper中传入这个 sql 就可以了,如:

List<Integer> selectBysql(SqlVo sql);
版权声明:本文为博主原创文章,未经博主允许不得转载。

MyBatis直接执行SQL的工具SqlMapper

可能有些人也有过类似需求,一般都会选择使用其他的方式如Spring-JDBC等方式解决。能否通过MyBatis实现这样的功能呢?为了让通用Mapper更彻底的支持多表操作以及更灵活的操作,在2.2.0...
  • isea533
  • isea533
  • 2015年03月11日 09:47
  • 29682

MyBatis 执行动态 SQL

应老婆要求写的这篇博客。 大家基本上都知道如何使用 MyBatis 执行任意 SQL,使用方法很简单,例如在一个 XXMapper.xml 中: select id="executeSql" ...

mybatis直接执行sql语句

转载自: http://blog.csdn.net/binyao02123202/article/details/8573352 在项目中,使用的是mybatis3.0.5,但没有采用其...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

mybatis 一次执行多条SQL

原文出处 感谢作者: http://rhodian.iteye.com/blog/1930891 mybatis+mysql如何批量执行多条语句 博客分类:  myb...

mybatis直接执行sql语句

在项目中,使用的是mybatis3.0.5,但没有采用其提供的DAO层接口映射的策略,而且在进行多种属性联合查找时,需要底层提供通用的解决方案,所以需要mybatis直接执行sql语句,各个daoIm...

mybatis执行原生sql小例子

public interface EventLogDao { void insertBatch(@Param("paramSQL")String sql);  void deleteBatch...

Spring配置Mybatis执行原生SQL语句

为什么要怎么做有这么一个应用场景:需要在Mybatis框架上进行多个连接池的配置,然后进行多种SQL语句的测试,因为有些SQL语句的结构比较复杂,有些会涉及到很多group by、join操作还有一些...

使用MyBatis的ScriptRunner执行sql文件

利用MyBatis的ScriptRunner执行sql文件 利用MyBatis的ScriptRunner执行sql文件 使用原因 为什么选择scriptRunner 纯java代码引用文件流的方式 a...

在mybatis执行SQL语句之前进行拦击处理

比较适用于在分页时候进行拦截。对分页的SQL语句通过封装处理,处理成不同的分页sql。 实用性比较强。 import java.sql.Connection; import java.sql.Pre...
  • hfmbook
  • hfmbook
  • 2014年12月17日 19:41
  • 42933
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Mybatis 直接执行SQL
举报原因:
原因补充:

(最多只允许输入30个字)