`
y806839048
  • 浏览: 1127469 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

关于mybatis传空值的处理

阅读更多

 关于mybatis传空值的处理:

 如果不做空处理在是null的时候就不会转化成数据库的无意义的null,直接存入null后面由于类型吧匹配错误报错

 1,mybatis-config.xml中设置

 

 <configuration>

 

 <settings>

        <setting name="callSettersOnNulls" value="true"/>  

        <setting name="jdbcTypeForNull" value="NULL" />

        <setting name="logImpl" value="STDOUT_LOGGING"/>

</settings>

 

</configuration>

2,具体sql.xml中用select用if判断(其实也不用第一步已经设置好了,为null空的时候会自动处理成""什么都没有),insert,update等不用因为第一步设置了

<select id="onLineFirmList" parameterType="map" resultType="map">

  select a.customer_key,a.customer_id,a.customer_name

,nvl(b.login_num,0) login_num,nvl(c.obj_sale_num,0) obj_sale_num,nvl(c.obj_buy_num,0) obj_buy_num

,nvl(d.ord_sale_num,0) ord_sale_num,nvl(d.ord_buy_num,0) ord_buy_num

from tb_cus_firm a

left join (select customer_key,count(1) login_num from TB_ACCESS_RECORD where url like '%/login%' group by customer_key) b on a.customer_key=b.customer_key

left join (select customer_key,sum(decode(CONTRADE_TYPE,'A',1,0)) obj_sale_num,sum(decode(CONTRADE_TYPE,'B',1,0)) obj_buy_num from tb_con_obj group by customer_key) c on a.customer_key=c.customer_key

left join (select t2.customer_key,sum(decode(t3.CONTRADE_TYPE,'A',1,0)) ord_sale_num,sum(decode(t3.CONTRADE_TYPE,'B',1,0)) ord_buy_num

from tb_pact_cnt t1,tb_con_ord t2,tb_con_obj t3

where t1.ord_key=t2.ord_key and t2.conobj_key=t3.conobj_key and t1.pact_type='B'

group by t2.customer_key) d on a.customer_key=d.customer_key where 1=1

 <if test="customerId !=null and customerId !=''">

 and a.customer_id like '%${customerId}%' ///like是不能用#

 </if>

 <if test="customerName !=null and customerName !=''">

 and a.customer_name like '%${customerName}%'

 </if>

  </select>

 

打印出来的sql:

  SELECT count(*) FROM (SELECT a.customer_key, a.customer_id, a.customer_name, nvl(b.login_num, 0) login_num, nvl(c.obj_sale_num, 0) obj_sale_num, nvl(c.obj_buy_num, 0) obj_buy_num,

  nvl(d.ord_sale_num, 0) ord_sale_num, nvl(d.ord_buy_num, 0) ord_buy_num FROM tb_cus_firm a LEFT JOIN (SELECT customer_key, count(1) login_num 

  FROM TB_ACCESS_RECORD WHERE url LIKE '%/login%' GROUP BY customer_key) b ON a.customer_key = b.customer_key LEFT JOIN (SELECT customer_key, 

  sum(decode(CONTRADE_TYPE, 'A', 1, 0)) obj_sale_num, sum(decode(CONTRADE_TYPE, 'B', 1, 0)) obj_buy_num FROM tb_con_obj GROUP BY customer_key) 

  c ON a.customer_key = c.customer_key LEFT JOIN (SELECT t2.customer_key, sum(decode(t3.CONTRADE_TYPE, 'A', 1, 0)) ord_sale_num, sum(decode(t3.CONTRADE_TYPE, 'B', 1, 0)) 

  ord_buy_num FROM tb_pact_cnt t1, tb_con_ord t2, tb_con_obj t3 WHERE t1.ord_key = t2.ord_key AND t2.conobj_key = t3.conobj_key AND t1.pact_type = 'B' GROUP BY t2.customer_key) 

  d ON a.customer_key = d.customer_key WHERE 1 = 1 AND a.customer_id LIKE '%%' AND a.customer_name LIKE '%%') table_count 

 

0
0
分享到:
评论

相关推荐

    mybatis 报空值异常

    `JdbcType OTHER` 表示 MyBatis 使用了一个默认的 JDBC 类型来处理该参数,但显然数据库并不识别这种类型。 #### 解决方案 为了解决上述问题,可以在映射文件中为每个可能为空的参数显式指定其对应的 JDBC 类型。...

    Mybatis Plus 字段为空值时执行更新方法未更新解决方案

    总结来说,Mybatis Plus在处理字段更新时遵循了不更新空值的策略,但可以通过`@TableField`注解的`fill`属性来改变这一行为,以满足特定场景的需求。对于希望在更新时保留字段原有值(包括NULL)的开发者,这是一个...

    mybatis 框架和一些mybatis的依赖jar包

    10. **最佳实践**:在实际应用中,应遵循一些最佳实践,例如合理设计Mapper接口,避免过多的SQL拼接,正确处理空值和异常,以及适当使用缓存等,以确保系统的稳定性和性能。 综上所述,MyBatis作为一个强大的ORM...

    mybatis完整学习笔记

    比如,if、choose、when、otherwise等标签可以构建复杂的条件判断,where标签可以智能处理空值,确保生成的SQL语句的正确性。 此外,MyBatis支持结果映射,它能自动将查询结果转换为Java对象。包括基本类型、复杂...

    mybatis plus 3.2.1破解版

    10. **字段策略**:支持忽略空值插入、非主键自增等字段策略,提高数据处理的灵活性。 在IDEA集成MyBatis Plus的过程中,首先需要在项目的pom.xml文件中添加MyBatis Plus的依赖,如下所示: ```xml &lt;groupId&gt;...

    MyBatis动态拼接SQL

    `&lt;otherwise&gt;`标签用于处理其他未匹配的情况。 ```xml SELECT * FROM table WHERE condition1 = #{value1} WHERE condition2 = #{value2} WHERE 1 = 1 ``` 3. `&lt;where&gt;`标签:主要用于构造...

    MyBatis入门到精通配套资源

    10. **最佳实践**:学习MyBatis的同时,也要注意一些最佳实践,例如避免硬编码SQL,使用预编译的PreparedStatement防止SQL注入,合理利用缓存提高性能,以及正确处理空值和集合类型等。 本资源包可能包含详细教程、...

    mybatis官方文档PDF_中英文版

    12. **Best Practices**:文档还会介绍最佳实践,如避免使用 SELECT *,合理设计映射文件,正确处理空值等,以提升开发效率和代码质量。 通过阅读这两份官方文档,你可以深入理解 MyBatis 的工作原理、配置方法以及...

    mybatis学习手册和整合mybatis+spring

    6. **MyBatis与POJOs**:解释如何将数据库表与Java对象进行映射,以及自动类型转换和空值处理。 7. **缓存机制**:MyBatis内置了一级和二级缓存,理解其工作原理和配置方法。 8. **MyBatis的插件机制**:如何编写...

    MyBatis使用手册(中文版)3.4.4版

    11. **最佳实践**:手册中还会包含如何编写高效的SQL,避免N+1查询问题,以及如何正确处理空值和集合等最佳实践。 以上就是MyBatis 3.4.4使用手册中的主要知识点,该手册详细阐述了每个概念,并提供了丰富的示例,...

    Mybatis增强工具包 v3.3.2

    为您提供Mybatis增强工具包下载,Mybatis-plus是MyBatis增强工具包,用于简化CRUD操作。该工具包为MyBatis提供了一些高效,有用,即用的功能,使用它可以有效地节省您的开发时间。Mybatis-plus特征:与MyBatis完全...

    Mybatis-Study.rar

    使用MyBatis时,应遵循一些最佳实践,如合理设计数据库表结构,避免全表扫描,合理设置事务隔离级别,以及正确处理空值和异常情况等。 这个"Mybatis-Study"的学习资源包将涵盖以上各个方面,通过学习,我们可以...

    mybatis包及其文档

    10. **最佳实践**:在实际使用中,应遵循一些最佳实践,如合理设置事务隔离级别,避免SQL注入,正确处理空值和null值,以及注意数据库连接的关闭和资源释放。 总之,MyBatis提供了一种轻量级、灵活且易于维护的解决...

    mybatis spring boot深入

    10. **最佳实践**:分享一些最佳实践,如避免硬编码SQL,使用MyBatis的动态SQL,以及如何正确处理空值和异常。 以上就是基于标题、描述和标签的深入分析,涵盖了MyBatis与Spring Boot集成的关键知识点,以及可能...

    mybatis初学者学习笔记整理

    正确处理空值和异常情况,确保程序健壮性。 通过本学习笔记,初学者可以系统地了解 MyBatis 的基本使用和关键概念,结合 B 站狂神的教学视频,可以深入理解并掌握 MyBatis 框架,从而在实际项目中高效地操作数据库...

    Java的MyBatis框架中Mapper映射配置的使用及原理解析

    5. `insertSelective`:这个方法类似于`insert`,但它只更新设置了值的字段,避免了插入默认值或空值。 6. `selectByExample`:这是查询数据的主要方法,可以根据多个条件进行筛选。例如,`selectByExample`可以...

    MyBatis全局设置.doc

    MyBatis全局设置是配置MyBatis框架的关键环节,这些设置可以显著影响MyBatis的运行时...通过理解和配置这些全局设置,开发者可以更有效地优化MyBatis的性能,确保数据的正确处理,并根据项目需求定制MyBatis的行为。

    Mybatis_day2.pdf

    当更新数据时,确保传入的参数包含所有需要更新的字段,否则MyBatis可能会因为空值问题而抛出异常。 1.2. 插入操作: 同样,在插入数据时,也要注意处理可能为空的字段,使用适当的`jdbcType`以允许NULL值。 2. ...

    Spring整合MyBatis-Plus完整案例项目代码

    MyBatis-Plus(简称MP)是对MyBatis的扩展,它在MyBatis的基础上提供了更便捷的CRUD操作,如自动填充主键、自动处理空值、条件构造器等。MP的核心思想是简化SQL操作,让开发者能够更加专注于业务逻辑的实现,而不是...

    mybatis-demo6-settings标签.zip

    这有助于保持对象状态的一致性,但也可能导致不必要的空值处理。 8. **defaultExecutorType**:此属性用于设置默认的执行器类型。MyBatis提供了三种执行器:SIMPLE(简单执行器)、REUSE(复用执行器)和BATCH...

Global site tag (gtag.js) - Google Analytics