-
mybatis常用標簽查看全部
-
常見問題解析 一、獲取自增主鍵值: <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中實體類的屬性名)指定該對象的主鍵值。 二、找不到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://192.168.1.1:3306/cms?characterEncoding=utf-8 4. 數據庫、表的編碼; 5. 展示頁面的編碼:<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 6. 瀏覽器編碼問題等。查看全部
-
這個insert語句傳到數據庫時 插入了數據 但是 id是沒有值得 需要使用keyProperty=“id” id為Command 實體類的屬性 這樣command對象在傳入時是沒有值得 執行時就有值了查看全部
-
insert時 useGeneratedKeys=“true”表示 主鍵是自增主鍵 而不是自己指定的主鍵值查看全部
-
一、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后面預編譯是不可以用直接的列名比?更合適,所以選用${})。 四、#{}和ognl:在#{}中如果是基本類型,其中的名稱可以隨便寫(不推薦),但一般都用_parameter,因為值唯一,而ognl中必須寫成_parameter的方式查看全部
-
Mybatis常用標簽:全部都是用在xml配置文件 **collection標簽是一對多,在“一”的xml對“多”的集合的引用 **association標簽是多對一,在“多”的xml對“一”的對象的引用查看全部
-
xml中如何反應一對多的關系? 主表里面包含子表的集合。 <conlection property="contentList" resultMap="CommandContent.Content"/> <result column="Description" jdbcType="VARCHAR" property="descrition"/> colunmn屬性的值:表示數據庫這邊的列名 【但不是指的數據庫中的列名,而是查詢出來的結果集的列名】 【只要column屬性有別名,那么相對應的xml配置文件中的column列的值也要帶上別名。但!??!不包括前綴,例:a.ID test ,相對應的column屬性值是test】 ------------------------------------------------------------------ 當兩個表中有相同列名時,這時候不光要取前綴名, 更重要的是給兩個列都取別名?。?!程序才能區分哪個列 ----------------------------------------------------------------- property屬性的值:表示對應的實體類中的字段 ------------------------------------------------ left join 無論子表有沒有內容,主表都應該顯示出來查看全部
-
如果js中Dom對象的值為 ""、null、undefined、0;則if(Dom對象)為false 點擊按鈕提交請求,判斷字符串不為空的話,執行ajax請求。 ajax復習: url:請求后臺的路徑 type:提交方式 dataType:數據類型 timeout:超時時間 success:成功后的回調函數,函數中的內容是對服務端傳遞的數據進行處理。 data:請求參數查看全部
-
知識點: 1.Connection為何不需要commit();因為conn.setAutoCommit(true);默認設置為自動提交,而myBatis把它封裝后,setAutoCommit(false);所以需要手動提交事務。 2.批量刪除的mapper.xml寫法,separator是分割的意思: <delete id="deleteBatch" parameterType="java.util.List"> delete from message where ID in( <foreach collection="list" item="item" separator=","> #{item} </foreach> ) </delete> 3. /** * 調用后臺批量刪除方法 */ function deleteBatch(basePath){ $("#mainForm").attr("action",basePath+"DeleteBatchServlet.action"); $("#mainForm").submit(); } 解析:將id為mainForm的表單的action提交路徑改為basePath+"DeleteBatchServlet.action"這個并且執行submit提交表單! 4.servlet只負責接受來自頁面的數據,不對其進行任何處理與轉換。查看全部
-
1.servlet負責接收頁面的值和向頁面傳值。如果有業務邏輯需要處理則調用相應的service。service接收servlet傳過來的值,并對其進行處理,做業務的操作,算法等等,如果有需要則調用相應的dao層。dao層完成與數據庫的交互,執行相應的SQL語句。 2.增刪改默認按事務處理,Mybatis對事務的控制,默認是不自動提交的,需要手動提交 sqlSession.commit();查看全部
-
log4j.properties詳解: 應用log4j(日志)調試動態SQL: 1、jar包和配置文件 2、log4j.properties <1>log4j.rootLogger=DEBUG,Console:輸出級別(級別<由低到高>debug/info/warn/error)和輸出位置(控制臺) <2>log4j.appender.Console=org.apache.log4j.ConsoleAppender:配置這個類才會輸出在控制臺(可在別處) <3>log4j.appender.layout=org.apache.log4j.PatternLayout:布局(按照自己的想法去輸出)<4>log4j.appender.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n: %d:產生日志的時間 [%t]:產生日志所處線程的線程名稱 %-5p:輸出日志的級別、 "5":代表輸出的字符會占5位字符,不足則會用空格補齊; "-":指的是補齊的空格在右邊,沒有則在左邊. [%c]:指輸出這個日志時處于的那個類的全名,包括包名 %m:輸出的時候附加的信息 %n輸出換行 <5>log4j.logger.org.apache=INFO:為不同包配不同的級別,把總的覆蓋,可看到自己想看的信息 log4j配置詳解 一、log4j.rootLogger=INFO, stdout, R 第一個參數為等級,后面可跟一到多個參數,為輸出的位置; 例句的意思為將等級為INFO的日志信息使用stdout和R進行輸出,stdout和R可以自己命名; 等級可分為OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL,OFF是關閉,不輸出任何信息,其他級別按這個順序依次降低,如果 指定一個級別,如INFO,則比該級別高的信息都會輸出查看全部
-
xml 或者是 HTML中 有轉義的方法 xml中 &是不能直接使用的 必須要轉義, 1、按照HTML的轉法 & -> & " -> " 2、還可以用mybatis中的ognl的表達式中自己的操作符 && -> and 3.在xml配置文件中SQL語句的拼接: 3.1<if test="command!=null and !"".equals(command.trim())"> and COMMAND=#{command}</if> 3.2<if test="description!=null and !"".equals(description.trim())"> and description like '%' #{description} '%'</if>注意'%' #{description} '%'一定要有空格查看全部
-
Mybatis中的OGNL表達式: mod:取余 in:判斷一個值是否在一個集合中查看全部
-
Mybatis中的OGNL表達式: Map中的_parameter.key 簡寫為 key foreach標簽不屬于 OGNL查看全部
-
sqlsession調用 方法來執行 sql語句 只是輸入了select標簽的名字,但是并沒有輸入sql配置文件的uri,所以要在數據庫連接的核心配置文件中 導入 sql配置文件,即<mappers>標簽與子標簽<mapper> sqlsession調用時會用到這個名字 resultmap屬性。對應的是resultmap標簽的id mybatis配置文件中的mapper標簽 屬性是namespace 翻譯是命名空間 mapper標簽內包含 resultmap標簽 是執行完查詢語句后返回的結果集 resultmap有子標簽 id。 用來配置 有主鍵約束的行 和result。 用來配置其他行 并列關系 ,都有屬性column jdbctype property屬性 column看名字 就是數據庫的字段名 properry 是數據庫對應dao類中的屬性 select標簽 insert標簽 update標簽。這些標簽里寫的都是sql語句 resultMap 中id是標識,是唯一的。resultMap中的子標簽中的id表示后臺數據庫的主鍵,而result對應得實后臺數據庫除了主鍵以外的其他字段。查看全部
舉報
0/150
提交
取消