国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Mybatis使用小札

SegmentFault / 3193人閱讀

摘要:你數據庫的默認值不起作用而是得到,那怎么解決這個問題呢通過使用和標簽我們解決了這個問題。將和均交由該處理,但本人實測,這個好像并沒有什么卵用,有用的是在文件中顯式指定,如下所示。

前言

Mybatis在我所見過的持久化框架里真心是一個異類,因為它是sql-centric的,而不是基于對象和表映射的。我會在本文中講一下Mybatis幾個重要的技巧,與本文的上一篇文章Hibernate做個對比。

Mybatis配置

在ApplicationContext上加上如下配置:

XML
        
        
        
    
    
        
    
    
        


然后在mybatis-config.xml中做進一步的配置。

XML

    
        
    

    
Mybatis 分頁

Mybatis不支持分頁,所以我采用了PageHelper這個插件,首先在你的Mybatis配置文件里加上一下配置

XML

然后在需要分頁的查詢之前,加上下面一句話:

javaPageHelper.startPage(pageNum,PAGE_SIZE);
Mybatis 中的sql標簽

由于Mybatis是通過文本替換組裝生成SQL語句的,所以不難發現它的插入和更新同樣是靜態的,對象里是null的插入也是null。你數據庫的默認值不起作用而是得到null,那怎么解決這個問題呢?

XML
        
            id,
            phone,
            email,
            photo,
        



        
            #{id},
            #{phone},
            #{email},
            #{photo},
        



        insert into user ()
        values ()


通過使用include和sql標簽我們解決了這個問題。

Mybatis typeHandler

有時候我們常常想將Collection或者其他對象直接以Json字符串的形式存在數據庫里而不是再開一張表,雖然普遍的觀點是不贊同這種做法,但這種需求卻是實際存在的。怎么才能在DAO中就將字符串和對象的轉換做掉而不用交給上層顯式地轉換呢?

采用自定義的Typehandler就可以,下面給出一個例子

java@MappedJdbcTypes(JdbcType.VARCHAR)
public class JSONHandler implements TypeHandler {

    /**
      * json數據和類名的分隔符號
      * */
     private static final char SPLIT = "/"; 


     /**
      * json 轉換成對象
      * */
     private Object jsonToObject(String json) throws RuntimeException{
        if (json == null) {
            return null;
        }
        int index = json.lastIndexOf(SPLIT);
        if (index < 0) {
            return null;
        }
        String key = json.substring(index + 1, json.length());
        json = json.substring(0, index);
        Class cls = null;
        try {
            cls = Class.forName(key);
        } catch (ClassNotFoundException e) {
            throw new RuntimeException("序列化成json時找不到指定的類", e);
        }
        Object ob = JSON.parseObject(json, cls);
        return ob;
    }

    public void setParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException {
        if(parameter == null){
             ps.setString(i, null);
             return;
        }
            String json = JSON.toJSONString(parameter);
            json  = json + SPLIT + parameter.getClass().getName();
            ps.setString(i, json);

    }

    public Object getResult(ResultSet rs, String columnName) throws SQLException {
        String  json = rs.getString(columnName);
        return  jsonToObject(json);
    }

    public Object getResult(ResultSet rs, int columnIndex) throws SQLException {
        String json=rs.getString(columnIndex);
        return jsonToObject(json);
    }

    public Object getResult(CallableStatement cs, int columnIndex) throws SQLException {
        String  json = cs.getString(columnIndex);
        return  jsonToObject(json);
    }


}


首先設定處理的JDBCType,顯然是變長字符,然后實現給定的接口,最后在Mybatis的配置文件中加上這么一句。

XML

將Map和List均交由該handler處理,但本人實測,這個好像并沒有什么卵用,有用的是在Mapper.xml文件中顯式指定,如下所示。

XML
insert (tags) values (#{tags,typeHandler=sbeat.util.helper.JSONHandler})


    

Mybatis 外鍵查詢

外鍵查詢需要使用resultMap的association標簽,如下所示

XML    
        
        
        
        
        
        
                
        
            
            
            
            
            
            
            
        
    
Mybatis 多參數

在接口定義中使用@Params注解,并在XML中不定義paramType,如下所示

javapublic List findByTradeId(@Param("tradeId") Long tradeId,@Param("ownerType") UserType ownerType);
XML    
Mybatis 逗號問題

逗號的不注意往往是使用Mybatis中出現最多的失誤,可以通過使用where和set一級trim標簽來盡量避免,如下所示:

XML
    id,
    phone,


    phone=#{phone},
    name=#{name},


    id=#{id}
    
        AND logic_delete=#{logic_delete}
        
            AND logic_delete=false
        
    
     AND name=#{name}

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/64398.html

相關文章

  • 《JavaScript設計模式與開發實踐》 —— <閱讀小札·一>

    摘要:閱讀小札一閱讀前自大學課上,就開始接觸設計模式,但對設計模式卻鮮有研究與實踐。第二部分是核心部分,由淺到深講解個設計模式。設計模式遵循的原則所有設計模式罪訓的一條原則就是找出程序中變化的地方,并將變化封裝起來。 閱讀小札 · 閱讀前 自大學Java課上,就開始接觸設計模式,但對設計模式卻鮮有研究與實踐。最近向公司反映和游說技術提升,得以獲得公司提供購書機會,借此認真學習前端學習之路的...

    Yangder 評論0 收藏0
  • Hibernate使用小札

    摘要:本文將由淺入深為您帶來一個粗略的使用體驗。當再次調用時,將得到一個新的,并重新開始這一系列工作。與此同時,提供了一套自己的,使用注解即可,主要有,,等,兩種級聯可以同時使用。 前言 Hibernate作為Java中最為流行的O/R映射框架,同時已經完全遵照JPA規范并作為其實現的一個超集,它能夠幫助我們快速進行開發,從繁重的持久化層實現中脫離出來。本文將由淺入深為您帶來一個粗略的Hi...

    starsfun 評論0 收藏0
  • MyBatis入門使用

    摘要:入門使用簡介是支持普通查詢存儲過程和高級映射的持久層框架。一般情況下是被整合使用的,但是他也可以獨立使用。獨立使用步驟建立類。配置文件主要用于配置程序中可變性高的設置,中的配置文件主要封裝在中。針對,注冊類型的,以及用于映射接口的。 MyBatis入門使用 MyBatis簡介 MyBatis是支持普通SQL查詢、存儲過程和高級映射的持久層框架。MyBatis消除了幾乎所有的JDBC代碼...

    shiyang6017 評論0 收藏0
  • MyBatis入門介紹

    摘要:入門介紹簡介是支持普通查詢存儲過程和高級映射的持久層框架。獨立使用步驟建立類。配置文件主要用于配置程序中可變性高的設置,中的配置文件主要封裝在中。對應于全局配置中的的配置屬性。進行測試代碼實例建立類。針對,注冊類型的,以及用于映射接口的。 MyBatis入門介紹 MyBatis簡介 MyBatis是支持普通SQL查詢、存儲過程和高級映射的持久層框架。MyBatis消除了幾乎所有的JDB...

    Eirunye 評論0 收藏0
  • MyBatis-Plus初步

    摘要:是最流行的關系型數據庫管理系統之一,在應用方面,是最好的,關系數據庫管理系統應用軟件。是一種關系數據庫管理系統,關系數據庫將數據保存在不同的表中,而不是將所有數據放在一個大倉庫內,這樣就增加了速度并提高了靈活性。 本章主要是對MyBatis-Plus的初步介紹,包括一些背景知識、環境搭建、初步使用等知識和例子。對于背景知識,主要包含對MyBatis-Plus的特性介紹、為什么使用MyB...

    娣辯孩 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<