当遇到插入null值造成mybatis无法识别的情况时,我们可以通过设置映射的数据类型来处理,或者使用动态sql标签这两种方式来处理这种问题
1、通过设置映射的数据类型来处理:在#{}格式种加入数据类型声明,这样明确告诉mybatis遇到null时该如何处理
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="mybatis.student">
<insert id="insertStu" parameterType="com.orm.Student">
insert into
t_student(id,name,password,school,major)
values(#{id,jdbcType=INTEGER},#{name,jdbcType=VARCHAR},#{password,jdbcType=VARCHAR},#{school,jdbcType=VARCHAR},#{major,jdbcType=VARCHAR})
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
select last_insert_id() as id
</selectKey>
</insert>
</mapper>
package com.controller;
import java.io.IOException;
import org.apache.ibatis.session.SqlSession;
import com.dbtools.GetSqlSession;
import com.orm.Student;
public class Insert {
public static void main(String[] args) throws IOException {
Student stu = new Student();
stu.setName("鬼鲛");
stu.setPassword(null);
stu.setSchool("晓");
stu.setMajor("影");
SqlSession sqlSession = GetSqlSession.getSqlSession();
sqlSession.insert("insertStu", stu);
sqlSession.commit();
sqlSession.close();
}
}
2、动态标签处理方式——if标签
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="mybatis.student">
<insert id="insertStuIf" parameterType="com.orm.Student">
<if test="password != null">
insert into
t_student(id,name,password,school,major)
values(#{id},#{name},#{password},#{school},#{major})
</if>
<if test="password == null">
insert into
t_student(id,name,school,major)
values(#{id},#{name},#{school},#{major})
</if>
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
select last_insert_id() as id
</selectKey>
</insert>
</mapper>
package com.controller;
import java.io.IOException;
import org.apache.ibatis.session.SqlSession;
import com.dbtools.GetSqlSession;
import com.orm.Student;
public class InsertIf {
public static void main(String[] args) throws IOException {
Student stu = new Student();
stu.setName("小李");
stu.setPassword(null);
stu.setSchool("木叶");
stu.setMajor("中忍");
Student stuif = new Student();
stuif.setName("宁次");
stuif.setPassword("123");
stuif.setSchool("木叶");
stuif.setMajor("上忍");
SqlSession sqlSession = GetSqlSession.getSqlSession();
sqlSession.insert("insertStuIf", stu);
sqlSession.insert("insertStuIf", stuif);
sqlSession.commit();
sqlSession.close();
}
}