学分高考 Java

怎么入门Java开发行业?MyBatis学习误区有哪些?

发布时间: 2022-03-12 13:00:01
怎么入门Java开发行业?MyBatis学习误区有哪些?MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。很多同学在学习MyBatis时一不小心就会犯错,比如在MyBatis/Ibatis中#和$的区别、#方式能够很大程度防止SQL注入、$方式无法防止SQLl注入等。接下来就给大家讲解MyBatis注意事项。

1、sum()和count()使用场景不对导致出错

count()、count(1)、count(0)就是指绝对的行数,哪怕某行所有字段全部为null也会计算在内。count(1)和count()相比,innodb来说count(*)效率低。

如果count(列名)查询出来的结果就是查出列名中不为null的行数;

sum(列名)对指定列名进行求和

MyBatis把int类型的0处理成空串’’和mysql处理空串’’为0的问题,在Mybatis的Mapper中整数类型条件该如何判断?

当数据库字段类型是整数,如果参数变量为空字符串或者NULL,Mybatis会自动将参数赋值0,所以如果要判断整数参数的多种状态在传递数值到Mapper之前就要判断是否为空字符串和NULL并将相应的状态数值赋值给该参数,否则参数值等于空字符串、NULL和0得到的结果是一样的。

一般情况下,涉及到int类型的操作的时候,在Service中会统一把数字类型先变成字符串类型,然后再传递到Mapper中操作。

2、多参数的使用

MyBatis的查询或者更新中,如果需要多个参数有如下几种办法:

对象映射,建立一个Java对象,并作为接口的参数,对象的属性可以直接使用#{属性名}的方式访问;

Map,参数为一个Map,key对于属性名,value对于参数值,这个方法就是传参数是需要建立一个Map的临时对象;

@param参数注解,在接口方法参数前加入参数名称注解,这样就可以直接在Mapper中通过参数名访问;

通过序号访问,第一个参数#{0}或#{param1},第二个参数#{1},#{param2}

MyBatis中时间字段的使用–返回;

时间字段的返回可采用放回字符串的方式:

date_format(update_time,‘%Y-%c-%d %H:%i:%s’) updatetime

采用MySQL的时间格式化方法。

或者放回Timestamp类型的数据,要求放回对象属性参数为Timestamp。

3、用XML注释取代SQL注释

MyBatis中原SQL的注释尽量不要保留,注释会引发一些问题,如果需要使用注释,可以在XML中用来注释,保证在生成的SQL中不会存在SQL注释,从而降低问题出现的可能性。这样做还有一个好处,就是在IDE中可以很清楚的区分注释与SQL。

4、尽可能使用`#{}`,而不是`${}`

MybBtis中尽量不要使用${},尽量这样做很方便开发,但是有一个问题,就是大量使用会导致ORACLE的硬解析,拖慢数据库性能,运行越久,数据库性能会越差。对于一般多个字符串IN的处理,基本可以解决大部分${}。

5、简单使用MyBatis

MyBatis的功能相对而言还是比较弱的,缺少了好多必要的辅助库,字符串处理等等,扩展也比较困难,一般也就可能对返回值进行一些处理。因此最好仅仅把它作为单纯的SQL配置文件,以及简单的ORM框架。不要尝试在MyBatis中做过多的动态SQL,否则会导致后续的维护非常麻烦。

6、时间戳的使用

在创建新记录的时候把这个字段设置为当前时间,但以后修改时,不再刷新它(可以给createtime使用这个):

TIMESTAMP DEFAULT CURRENT_TIMESTAMP

在创建新记录和修改现有记录的时候都对这个数据列刷新(可以给update使用这个):

TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

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

想要了解更多MyBatis学习误区,可以选择专业学习一下,让自己更快更好的学习入门Java开发,现在正是好时机。

温馨提示:
本文【怎么入门Java开发行业?MyBatis学习误区有哪些?】由作者教培参考提供。该文观点仅代表作者本人,学分高考系信息发布平台,仅提供信息存储空间服务,若存在侵权问题,请及时联系管理员或作者进行删除。
我们采用的作品包括内容和图片部分来源于网络用户投稿,我们不确定投稿用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的权利,请联系我站将及时删除。
内容侵权、违法和不良信息举报
Copyright @ 2024 学分高考 All Rights Reserved 版权所有. 湘ICP备17021685号