1.前言

typeHandler、jdbcType、javaType都是用来处理java数据类型和jdbc数据库数据类型的转换问题,但在xml的不同位置使用需要注意引号使用问题。

2.在xml的不同位置的使用方式

1)在xml的尖括号标签内做属性

必须给属性值加引号

    <typeHandlers>
<typeHandler handler="org.apache.ibatis.type.EnumTypeHandler"
javaType="Sex" />
</typeHandlers>

如果没有引号则要报错

2) 在xml的sql语句占位'#{   }'内

不能使用引号

后台java测试方法

    private SqlSession sqlSession = null;
@Before
public void openSession()
{
sqlSession = MyBatisUtil.createSqlSession();
} @Test
public void addStudent()
{
int addRows = sqlSession.insert("com.kgc.dao.StudentMapper.addStudent",
new Student(Short.valueOf("23"), Sex.FEMALE, "张大明"));
sqlSession.commit();
System.out.println("新增的行数" + addRows);
}

示例1:给typeHandler、jdbcType、javaType加上引号

    <insert id="addStudent" parameterType="Student"
useGeneratedKeys="true" keyProperty="id">
<selectKey keyProperty="id" resultType="string" order="BEFORE">
select uuid()
</selectKey>
insert into test_student (id,age, sex, name)
values (#{id},
#{age ,jdbcType="TINYINT" ,javaType="short"},
#{sex, typeHandler="org.apache.ibatis.type.EnumTypeHandler"},
#{name} )
</insert>

JUinit提示不知道"TINYINT"的枚举类型

示例2:取消typeHandler、jdbcType、javaType属性值的引号

    <insert id="addStudent" parameterType="Student"
useGeneratedKeys="true" keyProperty="id">
<selectKey keyProperty="id" resultType="string" order="BEFORE">
select uuid()
</selectKey>
insert into test_student (id,age, sex, name)
values (#{id},
#{age ,jdbcType=TINYINT ,javaType=short},
#{sex, typeHandler=org.apache.ibatis.type.EnumTypeHandler},
#{name} )
</insert>

控制台打印,增加数据成功。

3.总结

在xml的尖括号标签内做属性,需要给typeHandler、jdbcType、javaType的属性值加引号;

在xml的sql语句占位'#{   }'内 ,不能给typeHandler、jdbcType、javaType的属性值加引号。

mybatis的XML配置文件中,typeHandler、jdbcType、javaType的使用的更多相关文章

  1. Mybatis在xml配置文件中处理SQL中的大于小于号的方法

    之前在项目中遇到了在SQL中<=不识别的问题,在Navicat中语句正常,在xml中不识别,想起来就记录一下 项目用的是Mybatis,经过网上多次查询,验证,总结方法如下: 一.使用<! ...

  2. mybatis的xml文件中如何处理大小于号

    在mybatis的xml配置文件中会遇到大小于号转化的问题,解决问题的方法如下: 1.用转义字符把>和<替换掉 SELECT * FROM test WHERE AND start_dat ...

  3. mybatis 中的 xml 配置文件中 ‘<’、 ‘>’ 处理

    mybatis 中的 xml 配置文件中 '<'. '>' 处理 1.使用转义字符将 '<'. '>' 替换掉. 描述 字符 转义字符 小于号 < < 大于号 &g ...

  4. IDEA中写MyBatis的xml配置文件编译报错的坑

    IDEA中写MyBatis的xml配置文件编译报错的坑 说明:用IDEA编译工具在项目中使用Mybatis框架,编写mybatis-config.xml和Mapper.xml配置文件时,编译项目出现错 ...

  5. mybatis :xml文件中传入参数和if标签结合使用时要点

    org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.reflection.Reflecti ...

  6. MyBatis Mapper.xml文件中 $和#的区别

    MyBatis Mapper.xml文件中 $和#的区别   网上有很多,总之,简略的写一下,作为备忘.例子中假设参数名为 paramName,类型为 VARCHAR . 1.优先使用#{paramN ...

  7. @Required 注释应用于 bean 属性的 setter 方法,它表明受影响的 bean 属性在配置时必须放在 XML 配置文件中,否则容器就会抛出一个 BeanInitializationException 异常。

    @Required 注释应用于 bean 属性的 setter 方法,它表明受影响的 bean 属性在配置时必须放在 XML 配置文件中,否则容器就会抛出一个 BeanInitializationEx ...

  8. 通过java程序调用ant build.xml配置文件中指定的target

    一.概述 通过ant实现项目的自动化部署,jar包生成,替换,tomcat关停.启动,查看项目日志: 通过java程序调用已编辑好的ant脚本build.xml配置文件中指定的target: 文中文件 ...

  9. Spring的xml配置文件中约束的必要性 找不到元素 'beans' 的声明

    今天在复习Spring MVC框架的时候,只知道xml配置文件中的约束有规范书写格式的作用,所以在配置HandlerMapping对象信息的时候没有加入约束信息之后进行测试,没有遇到问题.后来在配置S ...

随机推荐

  1. BeginInvoke之前检测句柄

    只要在BeginInvoke方法的调用语句前再加一句:IntPtr i = this.Handle;就OK了,这比死循环配合this.IsHandleCreated的判断方法更简洁,因为this.Ha ...

  2. servlet的基本类和接口

    javax.servlet.Servlet接口 javax.servlet.GenericServlet类(协议无关版本) javax.servlet.http.HttpServlet类(HTTP版本 ...

  3. winfrom窗体的透明度

    在VS中创建一个Winform项目,其默认的窗体名称为 Form1. 在VS设计界面中对 Form1 的 Opacity 属性值设置为 50%. 没错,就这样就可以了. 方法2:            ...

  4. Python MySQL Limit

    章节 Python MySQL 入门 Python MySQL 创建数据库 Python MySQL 创建表 Python MySQL 插入表 Python MySQL Select Python M ...

  5. Redis的安装并配置快捷启动

    Redis 安装 1.下载 wget http://download.redis.io/releases/redis-5.0.5.tar.gz 2.解压 tar -zxvf redis-5.0.5.t ...

  6. no_string_attached笔记

    下载附件以后,在终端中查看 第一次调试时发现权限不够 接着,返回文件夹,修改该目标权限 然后进行调试 使用info  reg 查看寄存器的值 发现eflags寄存器为0x282,然后x/282 $ea ...

  7. 使用node.js安装asar和反编译app.asar

    背景:app.asar文件是Electron加密打包时的中间产物,electron.exe调用resources文件夹下的app.asar从而实现不用解压缩而直接读取文件内容的高效. 一.需要先安装n ...

  8. 14 ~ express ~ 显示用户数据

    一,router/admin.js var express = require('express') var router = express.Router() var User = require( ...

  9. HZNU-ACM寒假集训Day2小结 二分答案

    Day2 ---二分 这里直接给出模板 两种对应不同的情况 可以借助数轴理解 int bsearch_1(int l, int r) { while (l < r) { ; if (check( ...

  10. python复习——字符串

    1.字符串:用双引号括起的内容 2.title()——首字母大写:print(变量名.title()) upper()——全部大写:print(变量名.upper()) lower()——全部小写:p ...