当前位置: 首页 > news >正文

微信网站的结构互联网营销师培训教程

微信网站的结构,互联网营销师培训教程,网站建设的基本思路,如何办个网站基本类型及其它的包装类在写接口时要注意什么在Java开发中,我们经常使用基本数据类型和它们的包装类。这两者之间有着重要的区别,尤其是在MyBatis等ORM框架中进行动态SQL判断时,正确理解这些差异至关重要。本文将深入探讨基本类型与包装类的区…

基本类型及其它的包装类在写接口时要注意什么

在Java开发中,我们经常使用基本数据类型和它们的包装类。这两者之间有着重要的区别,尤其是在MyBatis等ORM框架中进行动态SQL判断时,正确理解这些差异至关重要。本文将深入探讨基本类型与包装类的区别,并分析在MyBatis中如何正确进行非空判断。

一、基本类型与包装类

Java提供了8种基本数据类型,以及对应的包装类:

基本类型->默认值

包装类对象默认值大小/范围
byte-> 0Bytenull8位,-128~127
short> 0Shortnull16位,-32768~32767
int> 0Integernull32位,-2^31~2^31-1
long> 0LLongnull64位,-2^63~2^63-1
float> 0.0fFloatnull32位,IEEE754标准
double> 0.0dDoublenull64位,IEEE754标准
char> '\u0000'Characternull16位,Unicode字符
boolean> falseBooleannulltrue/false

关键区别:

  1. 存储方式:基本类型是值类型,直接存储数据值;包装类是引用类型,存储对象的引用。

  2. 默认值:基本类型有默认值(如int为0),而包装类默认值为null。

  3. 空值:包装类可以为null,表示缺失或未设置的值,而基本类型不能为null。

二、MyBatis中的非空判断

在MyBatis的动态SQL中,我们经常使用<if>标签进行条件判断。由于基本类型和包装类的特性不同,判断方式也需要特别注意。

1. 数值类型(Integer、Long等)

对于数值类型的包装类(如Integer、Long),只需判断是否为null,不需要判断空字符串。

正确示例:

<if test="status != null">AND status = #{status}
</if>

错误示例:

<if test="status != null and status != ''">AND status = #{status}
</if>

解释:数值类型包装类只需判断null,因为空字符串('')对于数值类型是没有意义的。如果使用基本类型(如int),则不需要判断null,因为它总是有值(默认0),但这可能影响业务逻辑(无法区分未设置值和0)。

2. 字符串类型(String)

字符串是引用类型,需要同时判断null和空字符串。

正确示例:

<if test="username != null and username != ''">AND username = #{username}
</if>

解释:字符串需要判断null和空字符串,因为这两种情况都表示没有有效的值。

3. 布尔类型(Boolean)

布尔包装类型只需判断是否为null。

正确示例:

<if test="active != null">AND is_active = #{active}
</if>

解释:Boolean包装类型需要判断null,以区分未设置值、true和false。如果使用基本类型boolean,则不需要判断null,但它只能表示true或false,无法表示未设置。

4. 浮点类型(Float、Double)

浮点类型的包装类只需判断是否为null。

正确示例:

<if test="price != null">AND price = #{price}
</if>

解释:与整数类型类似,浮点类型包装类只需判断null,不需要判断空字符串。

三、底层原理分析

MyBatis使用OGNL(Object-Graph Navigation Language)表达式进行条件判断。OGNL在处理基本类型和包装类时,会自动进行类型转换,但我们需要明确区分null和默认值。

  • 包装类:可以为null,表示该字段未被赋值。

  • 基本类型:不能为null,总是有默认值(如0、false等)。

在实体类中使用包装类的优势在于可以区分"未赋值"和"默认值"。例如,对于Integer类型的status字段,null表示未设置,0表示设置值为0。而基本类型int的status字段,0可能是默认值,也可能是业务设置的0,无法区分。

四、常见错误与最佳实践

常见错误:

  1. 对数值类型判断空字符串

    <!-- 错误示例 -->
    <if test="userId != null and userId != ''">user_id = #{userId}
    </if>
  2. 忽略基本类型的默认值:使用基本类型时,默认值可能影响业务逻辑,比如默认0可能被当作有效值。

最佳实践:

  1. 在实体类中使用包装类型:这样可以更好地区分"未赋值"和"默认值"场景。

  2. 数值类型只需判断null:不需要判断空字符串。

  3. 字符串类型判断null和空字符串:确保两种情况下都不会生效。

  4. 布尔类型判断null:区分未设置值和设置值。

五、总结

在MyBatis动态SQL中,正确处理基本类型和包装类的非空判断是编写健壮代码的关键。总结如下:

  • 使用包装类型可以更好地区分未设置值和默认值。

  • 对于数值类型(Integer、Long等),只需判断!= null,不需要判断空字符串。

  • 对于字符串类型,需要同时判断!= null and != ''

  • 对于布尔类型,只需判断!= null

  • 避免对数值类型进行空字符串判断,这是常见的错误用法。

遵循这些原则,可以编写出更加清晰、健壮和可维护的MyBatis动态SQL语句。

http://www.dtcms.com/a/444420.html

相关文章:

  • 集团型网站建设企业网站搭建教程
  • 如何建网站遂宁wordpress新手入门教程
  • 网站建设提供的网站资料wordpress 淘宝客赚钱
  • 在网站建设中 为了防止工期拖延页优化软件
  • seo网站建设是什么网站建设案例新闻
  • 优化网站哪个好网站注册协议模板
  • 简单三栏网站背景图在线制作
  • 网站建立定位企划小程序推广收费价目表
  • 做中医药网站有前景吗安卓上搭建wordpress
  • 图书翻页的动画 做网站启动用网站建设环境
  • 刷业务网站怎么做网站访问量太多
  • 搜索引擎网站的结构wordpress页面构造器
  • 北京网站建设外包公司网站建设与维护实训总结
  • 阿里云服务器win系统建站教程关于网站建设的报告
  • 网站菜单导航制作教程wordpress两侧悬浮框
  • 成都网站制作公司报价小学编程培训班多少钱一个月
  • 网站建设制作作业微信公众号申请
  • 网站开发一般分为几个步骤什么都能搜的浏览器
  • 做网站资源管理是网站建设seo合同书
  • 优秀企业网站建设公司wordpress 翻墙
  • 柔造网站定制商标设计免费的app
  • 横向网站北京建设招标信息网站
  • 买个网站多少钱免费引流app下载
  • 在线支付网站制作有没有帮忙做推广的网站
  • 如何做企业网站规划微信朋友圈产品推广语
  • 详述网站建设的过程大连网站建设个人
  • 影响网站打开速度的因素wordpress中国加速
  • 网站开发服务商平台网站建设产品展示型的
  • 进入网站后台管理系统做境外旅游的网站
  • 外贸汽车网站有哪些学习网站建设的心得体会