-
111查看全部
-
Mybatis中的OGNL表達式查看全部
-
Configuration.xml查看全部
-
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. 瀏覽器編碼問題等。查看全部
-
一、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的方式查看全部
-
Ps1: <where><if test=""></if>...</where>標簽相當于“where 1=1 and...”,<where>標簽和where 1=1不可共存,兩者取其一即可。 Ps2: <select> select <include refid="columns"></include> from command </select> <sql id="columns">a.id C_ID,b.id,b.commandId</sql> //作用:增強了維護性,減少代碼復用。 Ps3: //解析:<trim>標簽在<select>/<update>等內使用。prefix在sql語句最前面加上,suffix在sql語句最后面加上,去掉sql語句最前面prefixOverrides,去掉sql語句最后面suffixOverrides。 <trim prefix="where" suffix="test" prefixOverrides="andor" suffixOverrides=","> //sql語句 </trim> 提示:prefix="where" prefixOverrides="andor"等價于<where>;prefix="set" suffixOverrides=","等價于<set>。 Ps4: <choose> <when test=""></when> <when test=""></when> <otherwise></otherwise> </choose> 理解1:if—else if—else 理解2:switch—case—case—default Ps5: <collection property="主實體類中的List<子實體類>的對象名" resultMap="子xml中mapper中屬性namespace名.resultMap的id名"/>//這條語句寫在主xml<resultMap>中。 <association property="子實體類中的主實體類的對象名" resultMap="主xml中mapper中屬性namespace名.resultMap的id名"/>//這條語句寫在子xml<resultMap>中。查看全部
-
如何在xml的配置文件中反應表結構之間的對應關系呢? 在java中,通過主表的實體類中包含子表的集合來反應一對多的關系,在配置文件中同樣是通過集合來配置這種關系的。在主表的映射文件中使用<collection>標簽來指定子表的對應關系以及子表的引用,使用resultMap屬性來指定子表映射關系的文件,格式是namespace.子表對應關系的id。那么新的問題來了,主表中的id與子表中的id,同時映射到結果集resultMap就會產生問題,所以就需要給任意一個id起一個別名。注意:給表起別名,以及字段的引用,打印出的結果是不包含表名的,比如說 a.id,打印出的結果是沒有a的,所以a.id與b.id映射的都是一個屬性,所以給字段起一個別名,那么字段名就會改變,配置映射文件的時候,注意數據庫字段與java實體類的屬性的對應關系。查看全部
-
如果js中Dom對象的值為 ""、null、undefined、0;則if(Dom對象)為false 點擊按鈕提交請求,判斷字符串不為空的話,執行ajax請求。 ajax復習: url:請求后臺的路徑 type:提交方式 dataType:數據類型 timeout:超時時間 success:成功后的回調函數,函數中的內容是對服務端傳遞的數據進行處理。 data:請求參數查看全部
-
Connection為何不需要commit();因為conn.setAutoCommit(true);設置為自動提交,而我們MyBatis把它封裝后,setAutoCommit(false);所以需要手動提交事務。 Ps1:a href="#" 這個在html中有什么作用?跳轉到本頁面頂部,一般建議寫成javascript:void(0);要好一點,點了一點反應都沒有,寫#點了會跳一下的。 Ps2:servlet拿到什么數據類型就什么類型,至于service不一致時,再service里面去修改,這也是service作用之一。 Ps3:MyEclipse對JS等文件報錯處理:http://jingyan.baidu.com/article/ca41422fe094251eae99ede7.html Ps4: /** * 調用后臺批量刪除方法 */ function deleteBatch(basePath){ $("#mainForm").attr("action",basePath+"DeleteBatchServlet.action"); $("#mainForm").submit(); } 解析:將id為mainForm的表單的action提交路徑改為basePath+"DeleteBatchServlet.action"這個并且執行submit提交表單!查看全部
-
Ps1: servlet負責接收頁面的值和向頁面傳值。如果有業務邏輯需要處理則調用相應的service; service接收servlet傳過來的值,并對其進行處理,做業務的操作,算法等等,如果有需要則調用相應的dao層; dao層完成與數據庫的交互,執行相應的SQL語句。 Ps2:basePath后面默認有個“/”。 Ps3: <servlet-mapping><br> <servlet-name>...</servlet-name> <url-pattern>/Servlet.action</url-pattern>//推薦使用這種方式,不推薦使用帶“/”方式,因為跳轉的時候需要處理。這樣一來可以避免這個處理問題。 </servlet-mapping> Ps4:增刪改與查詢不一樣,MyBatis查詢默認有事務提交,但增刪改需要手動提交事務。sqlSession.commit();查看全部
-
log4j.properties說明: 1.debug:輸出的級別(為大于等于配置的級別,分別有四個級別(由小到大):debug、info、warning、error),Console輸出端的名稱(可以“自定義名稱”,但是下面的appender.“自定義名稱”一致)。 2.輸出到控制臺。 3.布局。 4.輸出格式:%d產生時間,%t線程,%p日志級別(“-”號,空格在最右邊(左對齊),去掉“-”號,空格在最左邊(右對齊);5:至少占位5個位置),%c日志打印的類,%m輸出內容,%n換行。 5.org.apache:該包下的日志級別,第一行是針對所有的日志定義的級別。查看全部
-
OGNL表達式支持直接調用java對象的方法 ognl表達式的邏輯表達式需要轉義如“&”需要轉義為“&”或者用“and”替換,“"”轉義為“"” 傳參使用#{參數名}查看全部
-
Mybatis總的OGNL表達式之二:查看全部
-
Mybatis中的OGNL表達式之一查看全部
舉報
0/150
提交
取消