<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      MyBatis Mapper映射處理CLOB和BLOB類型

      ?Mybatis的MapperXML映射文件應(yīng)該處理數(shù)據(jù)庫字段類型為CLOB和BLOB類型的數(shù)據(jù)呢?首先我們先看下CLOB和BLOB這兩種數(shù)據(jù)類型的介紹。

      介紹

      使用Mybatis時涉及到兩種特殊類型的處理,分別是Blob(Binary Large Object)和Clob(Character Large Object)。Blob表示二進(jìn)制大對象字段,而Clob則表示大字符對象字段。這兩種類型需要特殊處理。

      Blob主要用于存儲大型二進(jìn)制數(shù)據(jù),例如圖像、音頻或視頻文件等。而Clob則用于存儲大量文本數(shù)據(jù),比如長篇文章、日志等。在JDBC中,PreparedStatement和ResultSet提供了相應(yīng)的方法來支持Blob和Clob的操作,使得在數(shù)據(jù)庫中存儲和檢索這些大型數(shù)據(jù)變得更加容易。

      本文首發(fā):https://www.panziye.com/java/7876.html

      Mybatis作為一個持久層框架,也對Blob和Clob類型進(jìn)行了支持。不同版本的Mybatis都提供了對這些類型的存儲和讀取操作的功能。下面將詳細(xì)介紹Mybatis中如何操作Clob字段。

      對應(yīng)關(guān)系

      BLOB和CLOB在不一樣的數(shù)據(jù)庫中對應(yīng)的類型也不同:
       MySQL中:clob對應(yīng)text/longtext,blob對應(yīng)blob
      Oracle中:clob對應(yīng)clob,blob對應(yīng)blob

      Mapper.xml映射

      Mapper文件中查詢sql的id為queryByList,report_summary為Oracle數(shù)據(jù)庫中的一個字段,是CLOB類型。myClob為java類,在java類中定義一個String類型的字段reportSummary,用于接收CLOB信息。

      1)Mapper.xml文件加入如下配置可以讀取CLOB和BLOB類型的數(shù)據(jù)

      jdbcType="CLOB" typeHandler="org.apache.ibatis.type.ClobTypeHandler"
      jdbcType="BLOB" typeHandler="org.apache.ibatis.type.BLOBTypeHandler"
      

      2)案例代碼

      <select id="queryByList" parameterType="Map" resultMap="queryBaseResultMap">
          select  id ,title,type,report_summary,author from my_clob
          where 1 = 1 order by ${orderByClause}
      </select>
      <resultMap id="queryBaseResultMap" type="com.mxm.model.MyClob" >
          <id column="Id" property="id" jdbcType="INTEGER" />
          <result column="type" property="type" jdbcType="INTEGER" />
          <result column="title" property="title" jdbcType="VARCHAR" />
          <result column="author" property="author" jdbcType="VARCHAR" />
          <result column="report_summary" property="reportSummary" jdbcType="CLOB" typeHandler="org.apache.ibatis.type.ClobTypeHandler">
      </resultMap>
      

      3)如果你的Clob是文本信息,在java實(shí)體類中,可以直接使用String字符串去接收處理。

      擴(kuò)展

      上面使用的是默認(rèn)的mybatis提供的ClobTypeHandler,當(dāng)然,你也可以自定義自己的handler進(jìn)行處理,這樣會有更好的靈活性。這里演示blob與String轉(zhuǎn)換。

      場景

      數(shù)據(jù)庫中有一個blob字段,在java中用String接收。使用如下方式讀取:

      <select id="find" resultType="com.example.bean.User">
        select id, name, experience, createTime
        from user
      </select>
      

      如果這里的experience字段為blob類型,那么取出來的數(shù)據(jù)就會亂碼。

      解決方法是自定義一個TypeHandler,通過繼承BaseTypeHandler類實(shí)現(xiàn)。如下。

      BlobToStringTypeHandler

      先看xml應(yīng)用:

      <resultMap id="UserResultMap" type="com.example.bean.User">
        <id property="id" column="id"></id>
        <result property="name" column="name"></result>
        <result property="experience" column="experience" typeHandler="com.example.handler.BlobToStringTypeHandler"></result>
        <result property="createTime" column="createTime"></result>
      </resultMap>
      
      <select id="find" resultMap="UserResultMap">
        select id, name, experience, createTime
        from user
      </select>
      

      再看BlobToStringTypeHandler代碼:

      import org.apache.ibatis.type.BaseTypeHandler;
      import org.apache.ibatis.type.JdbcType;
      
      import java.sql.*;
      
      public class BlobToStringTypeHandler extends BaseTypeHandler<String> {
        @Override
        public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
          ps.setString(i, parameter);
        }
      
        @Override
        public String getNullableResult(ResultSet rs, String columnName) throws SQLException {
          Blob blob = rs.getBlob(columnName);
          return new String(blob.getBytes(1, (int)blob.length()));
        }
      
        @Override
        public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
          Blob blob = rs.getBlob(columnIndex);
          return new String(blob.getBytes(1, (int)blob.length()));
        }
      
        @Override
        public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
          Blob blob = cs.getBlob(columnIndex);
          return new String(blob.getBytes(1, (int)blob.length()));
        }
      }
      

      以上,通過繼承BaseTypeHandler并實(shí)現(xiàn)其方法,將sql的blob類型字段與java的String類型互相轉(zhuǎn)換。

      附錄

      這里附上Mybatis JdbcType與Oracle、MySql數(shù)據(jù)類型對應(yīng)列表

      JdbcTypeOracleMySql
      ARRAY    
      BIGINT   BIGINT
      BINARY    
      BIT   BIT
      BLOB BLOB BLOB
      BOOLEAN    
      CHAR CHAR CHAR
      CLOB CLOB 修改為TEXT
      CURSOR    
      DATE DATE DATE
      DECIMAL DECIMAL DECIMAL
      DOUBLE NUMBER DOUBLE
      FLOAT FLOAT FLOAT
      INTEGER INTEGER INTEGER
      LONGVARBINARY    
      LONGVARCHAR LONG VARCHAR  
      NCHAR NCHAR  
      NCLOB NCLOB  
      NULL    
      NUMERIC NUMERIC/NUMBER NUMERIC/
      NVARCHAR    
      OTHER    
      REAL REAL REAL
      SMALLINT SMALLINT SMALLINT
      STRUCT    
      TIME   TIME
      TIMESTAMP TIMESTAMP TIMESTAMP/DATETIME
      TINYINT   TINYINT
      UNDEFINED    
      VARBINARY    
      VARCHAR VARCHAR VARCHAR

      如果表格中有遺漏,?可以直接看官方文檔

      總結(jié)

      以上就是MyBatis MapperXML如何處理CLOB和BLOB類型數(shù)據(jù)的全部內(nèi)容,希望對你Java框架的學(xué)習(xí)有幫助!

      推薦閱讀

      MyBatis Plus如何解決百萬級大數(shù)據(jù)量查詢慢問題

      ?
      posted @ 2023-08-18 09:45  Java潘老師  閱讀(1860)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲熟女乱色一区二区三区| 亚洲午夜福利精品无码不卡| 国产永久免费高清在线观看| 久久精品激情亚洲一二区| 國產尤物AV尤物在線觀看| 亚洲ⅴa曰本va欧美va视频| 亚洲av永久无码精品天堂久久| 国产免费无遮挡吃奶视频| 国产午夜精品一区二区三| 精品一区二区三区在线播放视频| 精品一区二区免费不卡| 国产成人综合亚洲欧美日韩| 人妻系列中文字幕精品| A级日本乱理伦片免费入口| 国模雨珍浓密毛大尺度150p| 色丁香一区二区黑人巨大| 无码囯产精品一区二区免费 | 亚洲男人第一无码av网| 色综合久久精品中文字幕| 国产国语对白露脸正在播放| 亚洲va久久久噜噜噜久久狠狠| 国产黄色带三级在线观看| 国产精品久久精品| 亚洲国产美女精品久久久| 麻豆亚洲自偷拍精品日韩另| 蜜桃av无码免费看永久| 亚洲成aⅴ人在线电影| 日韩精品一区二区三免费| 免费无码中文字幕A级毛片| 四虎影视www在线播放| av在线播放国产一区| 亚洲国产精品久久一线不卡| 国产边打电话边被躁视频| 国产午夜福利精品视频| 国产无遮挡又黄又爽在线视频| 亚洲av精彩一区二区| 久久天堂综合亚洲伊人HD妓女| 亚洲精品不卡无码福利在线观看| 亚洲综合一区国产精品| 起碰免费公开97在线视频| 砚山县|