SQL语句作为参数传入mybatis执行

1、service

String sql = "SELECT * FROM table where id = #{params.id}"; // 这里是你的SQL语句
Map<String,Object> params = new HashMap<>();
params.put("id","1");
List<Map<String,Object>> result= mapper.executeQuery( sql,params);

**2、MyMapper **

List<TableEntity> executeQuery(@Param("sql") String sql);

3、xml

<select id="executeQuery" parameterType="string" resultType="java">
    ${sql}
</select>

总结:
只需要写好sql语句参数准备好传进去,mybatis会自动进行映射,我目前的需求是去使用sql语句作为参数去查询,但是这样写有风险,虽然是标签,但是一样能执行查询语句,所以我们已查询为目的的sql语句,还是推荐使用jdbctemplate的query方法,因为他只会执行查询语句,执行增删改会报错。推荐查看jdbctemplat增删改查

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Mybatis-plus是Mybatis的增强工具,它提供了许多方便的功能,方便开发人员进行Mybatis的使用。在实际开发过程中,我们经常需要打印SQL语句以及填充参数,以便于我们更好地调试和优化SQL语句。 在Mybatis-plus中,打印SQL语句以及填充参数非常简单。我们只需要在配置文件中添加一个配置,就可以实现打印SQL语句和填充参数的功能。具体步骤如下: 1.在配置文件中添加配置项 在Mybatis的配置文件中,添加如下配置项: ```xml <!-- 打印SQL语句 --> <setting name="logImpl" value="STDOUT_LOGGING"/> <!-- 显示SQL语句中的参数 --> <setting name="jdbcTypeForNull" value="NULL"/> <setting name="logLevel" value="DEBUG"/> ``` 2.在类中使用注解 在我们需要打印SQL语句的Mapper中,使用注解@Mapper以及@Log4j2即可。 ```java @Mapper @Log4j2 public interface UserMapper extends BaseMapper<User> { @Select("select * from user WHERE name = #{name}") User queryUserByName(String name); } ``` 这样,当我们使用queryUserByName方法的时候,就会在控制台上打印出SQL语句以及填充的参数Mybatis-plus是一个非常方便的工具,使用起来也非常简单,只需要简单的配置和使用注解即可实现打印SQL语句以及填充参数的功能,方便我们进行SQL优化和调试。 ### 回答2: Mybatisplus是一个基于Mybatis框架之上的底层扩展库,提供了很多便于开发的功能,如自动生成代码、分页插件、乐观锁、多租户插件等。同时,它也提供了打印SQL语句和填充参数的功能。下面就针对这两个功能进行讲解。 一、打印SQL语句 Mybatisplus提供了打印SQL语句的功能,可以在SQL执行前和执行后打印SQL语句,方便开发人员查看和排错。使用方式如下: 1.在配置文件中设置打印SQL语句的日志级别为DEBUG: ``` logging.level.com.baomidou.mybatisplus.core.executor=DEBUG ``` 2.对于需要打印SQL语句的Mapper方法,可以在方法上加上注解@Interceptor(ExecuteSqlInterceptor.class): ``` @Interceptor(ExecuteSqlInterceptor.class) List<User> selectUserList(); ``` 3.执行SQL语句后,在控制台中可以看到打印出来的SQL语句,例如: ``` DEBUG 9307 --- [nio-8080-exec-1] c.b.m.c.e.MPExecuteSqlInterceptor : ==> Preparing: SELECT * FROM user WHERE age > ? DEBUG 9307 --- [nio-8080-exec-1] c.b.m.c.e.MPExecuteSqlInterceptor : ==> Parameters: 18(Integer) DEBUG 9307 --- [nio-8080-exec-1] c.b.m.c.e.MPExecuteSqlInterceptor : <== Total: 2 ``` 二、填充参数 Mybatisplus还提供了填充参数的功能,可以在执行SQL语句前和执行后对参数进行处理。使用方式如下: 1.创建一个继承了HandlerInterceptor接口的类: ``` public class MybatisParamHandlerInterceptor implements HandlerInterceptor { @Override public Object intercept(Invocation invocation) throws Throwable { // 获取参数 Object[] args = invocation.getArgs(); // 处理参数 // ... // 执行方法 Object result = invocation.proceed(); // 处理返回值 // ... return result; } } ``` 2.在配置文件中配置自定义的参数处理器: ``` mybatis-plus: configuration: # 自定义参数拦截器 handler: MybatisParamHandlerInterceptor: com.example.handler.MybatisParamHandlerInterceptor ``` 3.对于需要自定义处理参数的Mapper方法,可以在方法上加上注解@Interceptor(MybatisParamHandlerInterceptor.class ): ``` @Interceptor(MybatisParamHandlerInterceptor.class ) List<User> selectUserList(int age, String name); ``` 4.执行SQL语句前,Mybatisplus会调用参数处理器中的intercept方法,可以进行参数处理。例如: ``` @Override public Object intercept(Invocation invocation) throws Throwable { // 获取参数 Object[] args = invocation.getArgs(); // 处理参数 args[0] = args[0] + 1; // 执行方法 Object result = invocation.proceed(); // 处理返回值 // ... return result; } ``` 通过以上方法,我们可以轻松地实现打印SQL语句和填充参数的功能,提高开发效率和调试效率。 ### 回答3: MybatisPlus 是一个基于 Mybatis 的增强工具包,为了在开发过程中更加方便的进行 SQL 语句的构建和执行,它提供了很多方便的功能。其中有一项非常实用的功能就是可以打印 SQL 语句并填充参数。下面我就来详细介绍一下如何使用 MybatisPlus 打印 SQL 语句并填充参数。 1. 配置 mybatis-plus 配置文件 在 mybatis-plus 配置文件中,我们需要打开 ShowSql 开关和 FormatSql 开关。如下: ``` # 显示sql mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl sql-injector: com.baomidou.mybatisplus.core.injector.LogicSqlInjector tenant-handler: xxx.TenantHandler db-config: logic-delete-field: DELETED query-strategy: # 查询全部(-1),单条(0),分页(1) id-type: uuid field-strategy: # 必须写,否则无法生效,开启下划线转驼峰命名 - com.baomidou.mybatisplus.generator.config.po.TableField type-enums-package: - com.xxx block-attack-enable: false table-prefix: - xxx_ schema: - cxdatabase - aadatabase - xxxdatabase Capital-Mode: false show-sql: true format-sql: true ``` 2. 查看打印日志 开启后直接查看控制台日志即可看到 SQL 语句和参数。 ``` 2021-03-29 19:42:06,144 INFO [http-nio-8080-exec-1] o.m.p.mapper.BaseMapper.selectList(BaseMapper.java:128) - ==> Preparing: SELECT id, name FROM user WHERE age > ? OR age < ? ORDER BY age DESC LIMIT ? 2021-03-29 19:42:06,149 INFO [http-nio-8080-exec-1] o.m.p.mapper.BaseMapper.selectList(BaseMapper.java:128) - ==> Parameters: 22(Integer), 35(Integer), 10(Integer) ``` 这里就可以看到完整的 SQL 语句和填充的参数了。 总之,使用 MybatisPlus 打印 SQL 语句并填充参数是非常实用的功能,能够在开发过程中方便我们调试 SQL 语句,定位问题,提高开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

诸葛博仌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值