快捷搜索:  汽车  科技

mybatis新手入门:Mybatis坑点指南 希望你不要进坑

mybatis新手入门:Mybatis坑点指南 希望你不要进坑然而运行后却发现后几个在数据库表里同名的字段取出来都是null,又如最近在做的项目,遇到myBatis的大坑,Mybatis一直报异常Java.lang.ArrayIndexOutOfBoundsException,于是开始代码查错,代码中有存储过程,然后开发使用ROOT用户执行SQL跑出来的数据结果集是正常的,在测试环境程序运行也正常,但是在正式环境就其他用户不行,最后发现是因为数据库没有给该用户授权出了问题。作为新手,在此记下刚踩的一个坑,(踩踩更健康= =踩过痛过才不会再次错),写了一个sql语句用到两张表,两张表中有两个字段名字是一样的都是Time和Content,然后要查询这两张表的这两个字段都要查出来放到一个dto中,dto如下图所示,sql语句如下,

mybatis新手入门:Mybatis坑点指南 希望你不要进坑(1)

介绍 大多数开发者应该都使用过Hibernate或者mybatis的框架,或多或少都踩过一些坑!如在MyBatis/Ibatis中#和$的区别,#方式能够很大程度防止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跑出来的数据结果集是正常的,在测试环境程序运行也正常,但是在正式环境就其他用户不行,最后发现是因为数据库没有给该用户授权出了问题。

mybatis新手入门:Mybatis坑点指南 希望你不要进坑(2)

案例一:

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

mybatis新手入门:Mybatis坑点指南 希望你不要进坑(3)

sql语句如下,

mybatis新手入门:Mybatis坑点指南 希望你不要进坑(4)

然而运行后却发现后几个在数据库表里同名的字段取出来都是null,

mybatis新手入门:Mybatis坑点指南 希望你不要进坑(5)

猜您喜欢: