Mybatis的这些坑!把我坑惨了!你遇到过?

大多数开发者应该都使用过Hibernate或者Mybatis的框架,或多或少都踩过一些坑!

如在MyBatis/Ibatis中#和KaTeX parse error: Expected 'EOF', got '#' at position 5: 的区别,#̲方式能够很大程度防止sql注入…方式无法防止Sql注入。所以,老司机 对新手说,最好用#。简单的说#{}是经过预编译的,是安全的,而是未经过预编译的,仅仅是取变量的值,是非安全的,存在sql注入。有些特例是需要关注的,有的时候需要用 解决解决一些实际问题。

如在执行sql语句时你有时并不希望让变量进行处理,而是直接赋值执行,这时就要用到(${a})了,在使用时还要这样赋值 @Param(value=“a”) String a
(文章中有超级福利)

如日期问题:

可能会遇到日期格式的时间段问题,当数据库的时间为DATE类型时,MyBatis的jdbcType应该使用DATE

jdbcType=DATE,

而不是使用

jdbcType=TIMESTAMP

如在使用resultMap的时候,要把ID写在第一行,否则的话,就会报错。

又如最近在做的项目,遇到myBatis的大坑,Mybatis一直报异常:

Java.lang.ArrayIndexOutOfBoundsException,

于是开始代码查错,代码中有存储过程,然后开发使用ROOT用户执行SQL跑出来的数据结果集是正常的,在测试环境程序运行也正常,但是在正式环境就其他用户不行,最后发现是因为数据库没有给该用户授权出了问题。

案例一:

作为新手,在此记下刚踩的一个坑,(踩踩更健康= =踩过痛过才不会再次错),写了一个sql语句用到两张表,两张表中有两个字段名字是一样的都是Time和Content,然后要查询这两张表的这两个字段都要查出来放到一个dto中,dto如下图所示,
Mybatis的这些坑!把我坑惨了!你遇到过?_第1张图片
sql语句如下,

你可能感兴趣的:(java,mybatis,数据库)