-
如果resultType指向Map,那么查詢的數據集會以鍵值對的形式保存到Map中查看全部
-
常用標簽總結查看全部
-
一、獲取自增主鍵值: <insert id="insert" useGeneratedKeys="true" keyProperty="id" parameterType="com.imooc.bean.Command"> insert into command(name,description) values(#{name},#{description}) </insert> //解析:添加數據(在主外鍵的關系中)可以使用 useGeneratedKeys="true",可獲取自增長的id,并配合keyProperty="id"(java中實體類的屬性名)指定該對象的主鍵值:即將其存到對應類的對象的id屬性中 二、找不到namespace.id的異常效果: 1、在Configuration.xml沒有配置<mappers><mapper resource="*.xml"></mapper></mappers>; 2、在1的配置中或selectList("Message.queryMessageList",message);中,名字寫錯。 三、排查SQL語法錯誤:如果控制臺出現SQL語句問題,復制到SQL軟件上執行,若有參數,手動寫上并執行。 四、不要過度使用${}。 五、亂碼問題: 1. servlet傳參時的編碼:request.setCharacterEncoding("utf-8");或直接使用過濾器; 2. Java文件本身的編碼; 3. 連接數據庫的參數中,設定編碼方式:jdbc:mysql://127.0.0.1:3306/micro_message?useUnicode=true&characterEncoding=UTF-8 4. 數據庫、表的編碼; 5. 展示頁面的編碼:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 6. 瀏覽器編碼問題等。查看全部
-
一、resultMap和resultType:當配置resultType時,就不需要配置resultMap,看似resultType方便,但是會被受限制,沒有resultMap開放多。 相同點:都是表示查詢結果集的類型。 不同點:resultMap需要手動配置映射關系,而resultType是直接指定java類型或者自定義的實體類型,查詢結果集的列名必須和實體屬性名稱一致(實體類:名稱大小寫可以忽略;java類型,如Map集合的key大小寫要一致,盡量都大小寫規范,如果不放心可以select ID id,...)。 優缺點: 1、resultType結果集列名要與java屬性名一樣,但是resultMap不受限制,因為resultMap有column來規定。 2、由于SQL類型與Java中類型部分不匹配,resultMap可以通過typeHandler=""來匹配(如:SQL中的0和1來表示java中的false和true;Date類型的轉換),但是resultType無能為力。 二、parameterMap和patameterType: 表示傳入參數的對應關系,前者不推薦使用,只是mybatis為了適應以前的版本。 提示:看到Map字眼的想到映射關系,看到Type字眼的想到類型。 三、#{}和${}: 相同點:都是用來作為占位符。 不同點:#{}在預編譯的時候會被替換為?,而${}在預編譯的時候直接將變量的值替換進去,而且沒有引號(所以還要加上“'${...}'”),故一般都是用前者,個別情況會使用后者:如需進行排序,且排序字段為參數時可以使用${}(order by后面不喜歡被預編譯,所以使用${}更為恰當)。 #{}:有預編譯,可防sql注入, ${}:無預編譯,直接拼接參數,字符串無引號; 四、#{}和ognl:在#{}中如果是基本類型,其中的名稱可以隨便寫(不推薦),但一般都用_parameter,因為值唯一,而ognl中必須寫成_parameter的方式查看全部
-
常用標簽匯總以及用法說明:【特別注意trim、sql】 trim是可以代替where和set以及其他標簽; sql并不是一句完整的Sql語句而是sql語句中常用到的查詢列,可將該查詢列定義為常量;查看全部
-
<collection property="主表實體類中的引用名" resultMap="子表的命名空間.兩表相關聯的字段">標簽是在主表中 【在主表中定義一個引用,查詢出來的主表中的數據關聯子表中的數據】 <association property="子表實體類中的引用名" resultMap="主表的命名空間.兩表相關聯的字段">該標簽是在子表中 【在子表中定義一個引用,查詢出來的子表中的數據去關聯主表中的數據】查看全部
-
類似java中的if-eles標簽及switch標簽: 【when中可以代表if--else if-else】 when可以代表if或者else if; otherwise代表else; 【switch中可以代表case-case-defult】 多個when代表多個case; otherwise代表defalut; -----------------------------例:--------------------------------- <choose> <when test=""></when> <when tes=""></when> <otherwise></otherwise> </choose>查看全部
-
<trim>可以代替<where>或者<set>標簽 ----------------------------------- prefix表示:要代替的標簽; suffix表示:[如果trim標簽內有內容輸出則在后面添加suffix里的內容] prefixOverrides表示:拼的字符串最前面出現了and則去掉 suffixOverrides表示;后面出現就切掉 -----------------------例:代替set標簽---------------------------- <trim prefix="set" suffixOverrides=","></trim> -----------------------例:代替where標簽-------------------------- <trim prefix="where" prefixOverrides="and/or"></trim>查看全部
-
where標簽 ------------------------------------------------------ <where> <if test="Command != null and !"".equals(Command.trim())">and command=#{Command}</if> <if test="Description != null and !"".equals(Description.trim())">and description like'%' #{Description} '%'</if> </where> 0.輸出where關鍵字 1.當沒有檢索條件時自動不輸出where關鍵字 2.將最前面的and給截獲,自動拼裝為正確的sql語句。 sql標簽 ------------------------------------------------------------ <sql id="columns">ID,COMMAND,DESCRIPTION,CONTENT</sql> select<include refid="columns"> from Message 【引用】 <update>update MESSAGE <set>【同where一樣自動調節為正確的sql語句】 <if test="Command != null and !"".equals(Command.trim())">and command=#{Command}</if> <if test="Description != null and !"".equals(Description.trim())">and description like'%' #{Description} '%'</if> </set> </update>查看全部
-
xml中如何反應一對多的關系? 主表里面包含子表的集合。 <conlection property="contentList" resultMap="CommandContent.Content"/> <result column="Description" jdbcType="VARCHAR" property="descrition"/> colunmn屬性的值:表示數據庫這邊的列名 【但不是指的數據庫中的列名,而是查詢出來的結果集的列名】 【只要column屬性有別名,那么相對應的xml配置文件中的column列的值也要帶上別名。但!??!不包括前綴,例:a.ID test ,相對應的column屬性值是test】 ------------------------------------------------------------------ 當兩個表中有相同列名時,這時候不光要取前綴名, 更重要的是給兩個列都取別名?。?!程序才能區分哪個列 ----------------------------------------------------------------- property屬性的值:表示對應的實體類中的字段查看全部
-
在js中: var content = $("#contnet").val(); 如果content="", content=null, content=undefined, content=0; 這時!content都等于true查看全部
-
更改頁面編碼格式: 文件右鍵---->properties----->Resource------>other[utf-8]查看全部
-
Mybatis常用標簽查看全部
-
.properties文件存的是Key-Value【鍵值對】 輸出形式:(級別由低到高) log.debug(); log.info(); log.warn(); log.error(); log4j.rootLogger【配置Debug級別及輸出位置Console】 例:log4j.rootLogger=DEBUG,Console[會輸出級別大于等于debug的所有信息] log4j.appender.Console=org.apache.log4j.ConsoleAppender【配置這個類決定輸出位置】 log4j.appender.Console.layout=org.apache.log4j.PatternLayout【布局】 log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n【自定義格式】 %d:時間,%t:線程名稱,%-5p代表輸出的級別[-代表右邊補齊,5代表至少輸出5位,不足用空格代替],%c:輸出日志所處于類的全名(包括包名),%m:輸出的附加信息,%n:代表換行 log4j.logger.org.apache=INFO【org.apache自己寫的包名】查看全部
-
OGNL直接支持java中的方法。 例: <if test="Command != null and !"".equals(Command.trim())">and command=#{Command}</if> &&:符號轉義&& 或者 and "":符號轉義"" 給參數賦值:#{command}是由mybaits處理的,遇到#{},mybaits會自動替換為?查看全部
舉報
0/150
提交
取消