码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • MyBatis学习:mapper.xml文件中传参时,标签使用javaType和jdbcType属性


    1、本篇博文的背景和目的

    目前我本人正在学习MyBatis框架,在原先了解并且懵懵懂懂使用的基础上,开始系统正式的学习。阐述了MVC架构模式和三层架构,明晰了在Web项目中的普遍编码层次,回顾了JDBC连接数据库,建立了使用MyBatis和MySQL的Maven项目,解释了STDOUT_LOGGING日志和手动提交事务,记录了MyBatis中#占位符的使用方法,回顾了MyBatis执行SQL语句的过程和使用到的一些重要类和接口,记录了将固定化的代码整合到一个工具类MyBatisUtil中,以减少代码量。记录了dao层接口的实现以及为什么要实现它。记录了MyBatis动态代理和使用动态代理的要求以及使用了动态代理生成的实现类,记录了parameterType属性和它的使用。记录了MyBatis框架下执行SQL语句传递简单类型参数的方法。本篇博客记录mapper.xml文件传参时,使用javaType属性和jdbcType属性。

    2、我的上一篇博文

    上一篇博文记录的是给SQL语句传递实体类对象参数的方法,感兴趣的读者可以查阅,链接如下:

    MyBatis学习:MyBatis框架下执行SQL语句传递实体类参数_你是我的日月星河的博客-CSDN博客目前我本人正在学习MyBatis框架,在原先了解并且懵懵懂懂使用的基础上,开始系统正式的学习。阐述了MVC架构模式和三层架构,明晰了在Web项目中的普遍编码层次,认识了框架,回顾了JDBC连接数据库,建立了使用MyBatis和MySQL的Maven项目,解释了STDOUT_LOGGING日志和手动提交事务,记录了MyBatis中#占位符的使用方法,回顾了MyBatis执行SQL语句的过程和使用到的一些重要类和接口,记录了将固定化的代码整合到一个工具类MyBatisUtil中,以减少代码量。...https://blog.csdn.net/weixin_46281472/article/details/126089273

    3、使用javaType属性和jdbcType属性使用的代码位置

    javaType属性和jdbcType属性应用在mapper.xml文件的标签内,传参的时候  #{  }  内部。这里我直接给出示例:

    1. <select id="selectByQueryParam2" resultType="com.bjpowernode.domain.Student">
    2.     select * from student where
    3.     name=#{p1,javaType=java.long.String,jdbcType=VARCHAR} or
    4.     age=#{p2,javaType=java.long.Integer,jdbcType=INTEGER}
    5. select>

    可以从名字中看出来:javaType就是指定传过来的参数的所属java类型,javaType属性值是类型的全限定路径名称,当然也可以是别名。这个在MyBatis官方文档手册中有,与resultType属性值有点类似。jdbcType就是标识指定出对应的数据库中字段的类型。jdbcType属性值在MyBatis官方文档手册中是有的。这里我粘贴一下java中的类型和数据库中的类型之间的对应,如下所示:

    1. JDBC Type Java Type
    2. CHAR String
    3. VARCHAR String
    4. LONGVARCHAR String
    5. NUMERIC java.math.BigDecimal
    6. DECIMAL java.math.BigDecimal
    7. BIT boolean
    8. BOOLEAN boolean
    9. TINYINT byte
    10. SMALLINT short
    11. INTEGER INTEGER
    12. BIGINT long
    13. REAL float
    14. FLOAT double
    15. DOUBLE double
    16. BINARY byte[]
    17. VARBINARY byte[]
    18. LONGVARBINARY byte[]
    19. DATE java.sql.Date
    20. TIME java.sql.Time
    21. TIMESTAMP java.sql.Timestamp
    22. CLOB Clob
    23. BLOB Blob
    24. ARRAY Array
    25. DISTINCT mapping of underlying type
    26. STRUCT Struct
    27. REF Ref
    28. DATALINK java.net.URL

    4、javaType属性和jdbcType属性的使用场景

    其实在一般写项目的时候,这两个属性是不写的,就像是parameterType一样,是可有可无的。

    但是,当写一个  代码生成器的时候,这个就需要必须加上去,为了自动生成代码的准确性。能写代码生成器程序的,我目前认为肯定也是经验很丰富的程序员了!!

    5、我的下一篇博文

  • 相关阅读:
    MyBatis_MyBatis之查询返回对象集合
    【广州华锐互动】VR影视制片虚拟仿真教学系统
    oracle临时表 WITH AS用法
    vue页面缓存解决方案
    Mybatis缓存机制
    Java 一台机器搭建多个tomcat,运行不同的程序
    【C++】-- 红黑树详解
    基于Python大数据的特定疾病的回归和分类
    Parser用法
    爬虫(六)
  • 原文地址:https://blog.csdn.net/weixin_46281472/article/details/126172553
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号