zoukankan      html  css  js  c++  java
  • 增加null&&使用HashMap存储查询结果集

    增加null

    oracle:如果插入的字段是Null,提示错误:Other而不是null

    mysql:如果插入的字段是Null,正常执行(没有约束)

    原因:各个数据库在mybatis中对各种数据类型的默认值不一致

      mybatis中,jdbcTypeForNull(如果是null),则默认值是Other。

      Other来说,Mysql能够处理(NULL),但是Oracle不行

    解决:

      Oracle:null->Other,需要手工告诉Oracle:other为null

      a.修改具体的sql标签

    当某个数据类型oracle无法处理时,告诉它默认值null

    注意此时设置的#{stuName,jdbcType=NULL}不会影响正常的赋值

    srcorgmyymapperstudentMapper.xml

        <insert id="addStudent" parameterType="Student" databaseId="oracle">
            <selectKey keyProperty="stuNo" resultType="Integer" order="AFTER">
                select myseq.currval from dual
            </selectKey>
            insert into student1(stuno,stuname,stuage,graname)
            values(myseq.nextval,#{stuName,jdbcType=NULL},#{stuAge},#{graName})
        </insert>

      b.配置mybatis全局配置文件conf.xml(推荐)

    srcconf.xml

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

    返回值为HashMap的情况

     srcorgmyymapperstudentMapper.xml

        <select id="queryStudentOutByHashMap" parameterType="int"
                resultType="HashMap">
            select stuNo "no",stuName "name",stuAge "age"
            from  student1 where stuNo=#{stuNo}
        </select>

     其中stuNo是数据库的字段名

    "no"是stuNo的别名,用于在map中get值时使用(作为map的key)map.get("no")

    如果不加别名,map的key就是字段名

     srcorgmyymapperStudentMapper.java

    HashMap<String,Object> queryStudentOutByHashMap(int stuNo);

    srcorgmyy estTest.java

            //Connection - SqlSession操作Mybatis
            //conf.xml->reader
            Reader reader = Resources.getResourceAsReader("conf.xml");
            //reader->sqlSession
    
            //可以通过build的第二参数 指定数据库环境
            SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader,"devOracle");
            SqlSession session = sessionFactory.openSession();
    
            StudentMapper studentMapper=session.getMapper(StudentMapper.class);
    
            HashMap<String, Object> studentMap = studentMapper.queryStudentOutByHashMap(1);
            System.out.println(studentMap.get("no")+","+studentMap.get("name")+","+studentMap.get("age"));
            System.out.println(studentMap);
            session.close();

    key:id  value:Student

    srcorgmyymapperstudentMapper.xml

        <select id="queryStudentsByHashMap"
                resultType="HashMap">
            select stuNo,stuName,stuAge from student1
        </select>

     srcorgmyymapperStudentMapper.java

        //程序根据select的返回值,知道map的value就是Student,根据@MapKey("STUNO")知道map的key是stuNo
      @MapKey("STUNO")//Oracle的元数据(表名、字段名)都是大写
      HashMap
    <Integer,Student> queryStudentsByHashMap();

    srcorgmyy estTest.java

            //Connection - SqlSession操作Mybatis
            //conf.xml->reader
            Reader reader = Resources.getResourceAsReader("conf.xml");
            //reader->sqlSession
    
            //可以通过build的第二参数 指定数据库环境
            SqlSessionFactory sessionFactory=new SqlSessionFactoryBuilder().build(reader,"devOracle");
            SqlSession session = sessionFactory.openSession();
    
            StudentMapper studentMapper=session.getMapper(StudentMapper.class);
    
            HashMap<Integer, Student> studentsMap = studentMapper.queryStudentsByHashMap();
            //System.out.println(studentMap.get("no")+","+studentMap.get("name")+","+studentMap.get("age"));
            System.out.println(studentsMap);
    
            session.close();
  • 相关阅读:
    flex布局知识总结
    js,ts操作dom总结
    编译原理 语法树 句柄 简单短语 短语
    linux基础命令期末考试总结
    arm汇编指令--str ldr
    npm常用命令(原创)
    JS获取图片的缩略图
    Spring MVC 返回Json IE出现下载
    jquery获取页面iframe内容
    MySQL 下 ROW_NUMBER / DENSE_RANK / RANK 的实现
  • 原文地址:https://www.cnblogs.com/mayouyou/p/13264269.html
Copyright © 2011-2022 走看看