-
Mybatis中的OGNL表達式的操作符用法—3(OGNL表達式對大小寫敏感)查看全部
-
Mybatis中的OGNL表達式的集合的用法—2(OGNL表達式對大小寫敏感)查看全部
-
Mybatis中的OGNL表達式的固定寫法—1(OGNL表達式對大小寫敏感)查看全部
-
parameterType="String" 【這里的參數是類型名,如果是自己定義的類型就需要精確到包名,以確保好找,如果是java基本類型則可不用,因為基本類型是屬于java.lang包,可以不用顯示的寫出來,只寫String即可】查看全部
-
階段總結之mybatis的作用: 1.在Configuration.xml中的對數據庫的配置替代了原本數據庫連接的相關代碼 2.新建一個訪問數據庫類DBAccess來調用Configuration.xml配置文件以及構建一個SqlSessionFactory對象來開啟一個數據庫會話,然后返回這個【SqlSession】 示例: Reader reader = Resources.getResourceAsReader("config/Configuration.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader); SqlSession sqlSession = sqlSessionFactory.openSession(); 3.在DAO中調用這個SqlSession來執行SQL方法,并將返回值與Message.xml配置文件做關聯匹配 例(查詢方法):<id column="id" jdbcType="INTEGER" property="Id"/> <select id="queryMessageList" resultMap="MessageResult"> select id,command,description,content from message where 1=1 </select> messageList = sqlSession.selectList("Message.queryMessageList"); [注:配置文件中的命名空間,一定要跟上,這里是Message] ---------------------------------------------------------- 關于SQL方法的調用以及返回值的處理都是通過Message.xml文件來處理的! 最后在Configuration.xml文件中配置與Message.xml的關聯即可。 示例:<mappers> <mapper resource="/config/Message.xml"></mapper> </mappers>查看全部
-
關于Message.xml的相關事宜: sqlSession執行SQL語句:sqlSession = dbAccess.getSqlSession(); messageList = sqlSession.selectList("Message.queryMessageList"); 【注】命名空間是一定要指明的![這里的Message就是命名空間] <id column="id" jdbcType="INTEGER" property="Id"> column對應數據庫字段名,property對應bean的字段名,jdbc是java中對應的類型查看全部
-
SqlSession其實也是一次數據庫的會話,是jdbc的組合體,是jdbc的封裝。 SqlSession執行 完畢之后也要關閉!查看全部
-
Mybatis之SqlSession 1.向SQL語句傳入參數 2.執行SQL語句 3.獲取執行SQL語句的結果 4.事務的控制 如何得到SqlSession: 1.通過配置文件獲取數據庫連接相關信息 2.通過配置信息構建SqlSessionFactory 3.通過SqlSessionFactory打開數據庫會話查看全部
-
一、獲取自增主鍵值: <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后面不喜歡被預編譯,所以使用${}更為恰當)。 四、#{}和ognl:在#{}中如果是基本類型,其中的名稱可以隨便寫(不推薦),但一般都用_parameter,因為值唯一,而ognl中必須寫成_parameter的方式查看全部
-
mybaits 配置文件詳細路徑: mybatis-3-mybatis-3.4.1\src\test\java\org\apache\ibatis\submitted\complex_property查看全部
-
常量的定義與引用 sql標簽和include標簽--sql標簽定義常量,增強了維護性,減少代碼復用;include標簽引用常量 <select> select <include refid="columns"></include> from command </select> <sql id="columns">a.id C_ID,b.id,b.commandId</sql>查看全部
-
一對多映射: 1.在pojo類里添加“多”方的主鍵屬性 2.在“多”方引用里添加collection標簽。 多對一映射: 1.在pojo類里添加“一”方的引用 2.在“多”方引用里添加association標簽,association里的property屬性為pojo類里添加“一”方的引用的名稱。 配置關聯關系 1.collection標簽--配置一對多映射 <collection property="主實體類中的List<子實體類>的對象名" resultMap="子xml中mapper中屬性namespace名.resultMap的id名"/>//寫在“一”xml<resultMap>中 2.association標簽--配置多對一映射 <association property="子實體類中的主實體類的對象名" resultMap="主xml中mapper中屬性namespace名.resultMap的id名"></association>//寫在“多”的xml<resultMap>中查看全部
-
格式化輸出 1.where標簽--針對where后面的條件進行格式化,輸入內容有檢索條件時才加where,輸入內容以and/or 開頭時會將此關鍵字截掉 <where><if test="">and COMMAND=#{command}</if>...</where> 2.set標簽--標簽中有內容會進行輸出,并將最后的逗號截掉 <set>...</set> 3.trim標簽--可以代替前兩個標簽 //解析:<trim>標簽在<select>/<update>等內使用。prefix在sql語句最前面加上,suffix在sql語句最后面加上,去掉sql語句最前面prefixOverrides,去掉sql語句最后面suffixOverrides。 <trim prefix="where" suffix="test" prefixOverrides="and/or" suffixOverrides=",">//prefix:添加前綴;suffix:添加后綴;prefixOverrides:去除語句前綴;suffixOverrides:去除語句后綴 //sql語句 </trim>查看全部
-
控制動態拼接SQL 1.foreach標簽 <foreach collection="list" index="i" item="item" separator="," >//collection:集合類型(array,list,map);index:下標;item:某個具體的項;separator:分割器 #{item} </foreach> 2.if標簽 <if test="command != null">COMMAND=#{command}</if>//test:判斷條件 3.choose標簽--相當于if—else if—else <choose> <when test=""></when> <when test=""></when> <otherwise></otherwise> </choose>查看全部
舉報
0/150
提交
取消