首先新建两个表,test 表 是用来测试 $ 符号的,
sharptest 是用来测试 # 符号的,相关的DO 以及 mapper我就不截图了,重点还是在mybatis 中的# 和$ 的区分,
test Mapper:
SharpTestMapper:
测试文件的书写:
测试结果:
这是怎么回事呢,原来是因为 name 是 mysql 的关键字,需要在mybatis 里面加上 强调符号,开搞开搞
testmapper
sharptestMapper
第二次测试
还是报错,这又是为啥,那我整个新表测试一下这个sql语句得了,开搞
奇了怪了,这为啥可以了呢,思来想去试试开mybatis 的debug 模式
嗷嗷,是前面的select 后面跟着的name没有加着重号,那我知道了,我再加上试试
(以后再也不用name做字段名字了呜呜呜)
还是不行啊,这是为啥,我把sharptest 的sql 语句放到mysql 中进行测试
发现了一个神奇的现象
嗷,我靠,我怎么少了个逗号,…我真的不是水军五五
几经测试发现不行,在mysql里面可以同时执行,mybatis 就不行,上网查了一下,发现mybatis会有缓存的概念,那好叭,我把这个缓存取消了,为了就是模拟我们这种不需要缓存的业务!
取消缓存需要在select语句中添加flushCache=“true”;
<select flushCache="true"></select>
看来mybatis 也有很多我需要学的东西呀
我不信了,我改一下sql得了,改成字符串拼接,然后有个sharp符号进行注释
想了半天,会不会是mybatis 对于xml 文件中的字段的进行拦截,尝试更改为update方法来进行测试,就直接更新name 为输入string
的字段的id为8
sharptest
嗷嗷好像是mybatis 的原因
网上说要在配置文件当中加一条语句:
怎么开启呢?在拼装mysql链接的url时,为其加上allowMultiQueries参数,设置为true,如下:
jdbc.jdbcUrl=jdbc:mysql://127.0.0.1:3306/database?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true
靠,果真是这样,那么我就没有问题了呀
执行前表的个数
执行结果