sql预处理导致的mybatis与数据库编辑器相同sql不同执行结果问题

mybatis框架下的sql使用preparedstatement进行sql的预处理操作,需要注意如下两点:

1.因为在mybaits的xml框架下写出的sql语句参数部分在执行时日志中会转变为?。在实际执行时的效果是 '参数',左右是加单引号的。所以使用?也就是参数进行拼接sql时要注意实际执行时参数的左右是加上单引号的。

例如

select count(1) from abc where #prefix#a#suffix# = 'a';

其中prefix参数为lower(

其中suffix参数为)

实际执行效果是

select count(1) from abc where 'lower('a')' = 'a'; --会报错

而不是

select count(1) from abc where lower(a) = 'a';

2.相同的sql在mybatis与数据库编辑器的执行效果可能不同,例如在mybaits中sql为

select count(1) from abc where a=#param#

其中param参数为ab'cd。

复制到数据库编辑器中sql为

select count(1) from abc where a='ab'cd'

会报错sql命令未正常结束,因为参数中的单引号作为特殊字符一般是成对出现,单独出现不能识别,在编辑器中需要使用'转义也就是写成''表示一个单引号,所以在数据库编辑器应写成

select count(1) from abc where a='ab''cd'

但是在mybatis下就不需要也不能对单引号进行转义,直接使用ab'cd即可。

由此推断mybaits与数据库编辑器对sql的解析引擎并不完全相同,把mybatis中的sql拿出来到数据库编辑器执行并不完全代表mybatis的实际执行情况,需要注意。

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis Plus 中设置 SQL Server 数据库的配置与其他数据库类似。你需要进行以下步骤: 1. 添加 SQL Server JDBC 驱动依赖 首先,在你的项目中添加 SQL Server 的 JDBC 驱动依赖。你可以在 Maven 或 Gradle 构建文件中添加以下依赖: Maven: ```xml <dependency> <groupId>com.microsoft.sqlserver</groupId> <artifactId>mssql-jdbc</artifactId> <version>9.4.0.jre11</version> </dependency> ``` Gradle: ```groovy implementation 'com.microsoft.sqlserver:mssql-jdbc:9.4.0.jre11' ``` 2. 配置数据源 在你的配置文件中,配置 SQL Server 数据库的数据源。这包括数据库的 url、用户名、密码等信息。示例配置如下: ```yaml spring: datasource: url: jdbc:sqlserver://localhost:1433;DatabaseName=mydatabase username: your_username password: your_password driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerDriver ``` 请将 `url` 中的 `localhost` 替换为你的 SQL Server 主机地址,`1433` 替换为你的 SQL Server 端口号,`mydatabase` 替换为你的数据库名称。`username` 和 `password` 分别是你的数据库登录凭证。 3. 配置 MyBatis Plus 在 MyBatis Plus 的配置文件中,配置 SQL Server 数据库的相关信息。示例配置如下: ```java @Configuration @MapperScan("com.example.mapper") public class MyBatisPlusConfig { @Autowired private DataSource dataSource; @Bean public MybatisSqlSessionFactoryBean sqlSessionFactory() { MybatisSqlSessionFactoryBean sessionFactoryBean = new MybatisSqlSessionFactoryBean(); sessionFactoryBean.setDataSource(dataSource); // 其他配置... return sessionFactoryBean; } } ``` 请将 `com.example.mapper` 替换为你的 Mapper 接口所在的包路径。 完成以上步骤后,你就可以在 MyBatis Plus 中使用 SQL Server 数据库了。根据你的实际需求,配置和使用 MyBatis Plus 的其他功能和特性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值