亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

通過自動回復機器人學Mybatis---基礎版

難度中級
時長 4小時30分
學習人數
綜合評分9.73
430人評價 查看評價
9.9 內容實用
9.7 簡潔易懂
9.6 邏輯清晰
  • 刪除多條數據的方法 在Sql配置文檔中添加 <delete id="deleteMore" parameterType="java.util.List" > delete from message where id in( <foreach collection="list" item="item" separator=","> #{item} </foreach> ) </delete> 其中<foreach>標簽中有separator屬性用來指明分割的符號.如果不指明的話就要手動添加逗號,拼接sql的時候就會出錯. 即#{item},#{item},#{item}, 最后會多出一個逗號,如果設置了separator="," 那么Mybatis就會自動為我們分割,不需要額外添加逗號,直接#{item},最終會變成#{item},#{item},#{item} public void deleteMore(List<Integer> list){ SqlSession sqlSession=Util.getSqlSession(); sqlSession.delete("deleteMore",list); sqlSession.commit(); sqlSession.close(); }
    查看全部
  • 執行刪除功能 在Sql的配置文檔需要添加 <delete id="deletemessage" parameterType="int" > delect from message where id =#{_parameter} //#{}括號里符合OGNL寫法,因為是基本數據類型所以是_parameter </delete> 只有<select>標簽需要添加resultMap屬性來指定關聯映射. 根據id編號來刪除單條數據 public void deletemessage(int id){ SqlSession sqlSession=Util.getSqlSession(); sqlSession.delete("deletemessage",id); sqlSession.commit(); //提交事務 sqlSession.close(); } 在Mybatis的增刪改中都需要提交事務.MyBatis有事務控制的能力,默認會創建事務但不會自動提交,因此需要用SqlSession的commit()方法提交.且用完SqlSession需要關閉.在JDBC是會自動創建與提交事務. servlet負責接收頁面的值和向頁面傳值.如果有業務邏輯需要處理則調用相應的service層的方法.service層中的方法參數來接收servlet傳過來的值,并對其進行處理,如果有需要則調用相應的dao層.dao層完成與數據庫的交互,執行相應的SQL語句.
    查看全部
  • Mybatis使用方法
    查看全部
  • log4j.rootLogger配置的第二個值是輸出日志的信息要顯示的位置.通常輸出在控制臺或者文件中.并不是因為單詞為Console就會輸出到控制臺,輸出到哪是由 org.apache.log4j.ConsoleAppender這個類控制的,只要配置了這個類就能夠輸出到控制臺.如果要輸出到文件就要配其他的類. 且rootLogger配置的第二個值是自定義的,只是個名稱.即可以是Console也可以是一個字母a.只要這個值與appender后面的單詞一樣即可. log4j.appender.Console.layout配置的是輸出日志的布局形式.org.apache.log4j.PatternLayout是一種自定義的布局形式.需要與log4j.appender.Console.layout.ConversionPattern一起使用,ConversionPattern是配置自定義輸出內容的布局的形式. %開頭是有特殊意義的 %d表示產生日志的時間 %t表示產生這個日志所處于的那個線程的名稱 %p表示輸出日志的級別即會顯示debug、info的字樣 %c表示輸出日志時這條輸出語句所處于的類的全名 %m表示輸出日志的時候附加的信息.即log.debug(mes)中的mes信息. %n表示換行. log4j.logger配置的是自定義包下的輸出級別.在log4j.logger后面可以跟任何一個包名.來規定此包下的類的日志輸出級別. log4j.rootLogger配置的那個輸出級別是對應整個工程的,如果想要在某個包下用別的輸出級別則可以通過log4j.logger.自定義包名="輸出級別"設置.
    查看全部
  • properties文件(.properties)里面都是key=value的形式.當需要用到properties文件的時候,程序里會通過key值來取到對應的value值. Mybatis已經封裝好對log4j操作的接口,因此會自動操作log4j輸出日志信息. log4j.properties文件就是為log4j準備的. (log4j.properties文件的內容): log4j.rootLogger=debug,Console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.layout=org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=%5p [%t] - %m%n log4j.logger.org.apache=INFO 其中log4j.rootLogger配置的是當使用log4j輸出日志的時候輸出的級別以及輸出的位置,因此有兩個值,用逗號隔開. Logger log; log.debug(mes); //輸出日志信息的不同形式 log.info(mes); log.warn(mes); log.error(mes); 即輸出的級別有debug、info、warn、error等.級別由低到高. 當log4j.rootLogger配置輸出日志信息的級別是debug時,則可以輸出通過大于等于debug形式輸出的信息.當配置為info時,則可以輸出通過大于等于info形式輸出的信息,此時便不會輸出通過debug形式輸出的信息.rootLogger的輸出級別一定要配置為debug,因為Mybatis封裝好的log4j方法中都是以debug的形式輸出.
    查看全部
  • 因為動態Sql語句是在SQL配置文檔里面,運行時我們并不知道是傳遞了哪些參數以及內部發生了什么變化. 可以用log4j調試動態SQL,Log4j是Apache的一個開源項目,通過使用Log4j可以控制日志信息輸送的目的地是控制臺、文件、GUI組件,甚至是套接口服務器、NT的事件記錄器、UNIX Syslog守護進程等.我們也可以控制每一條日志的輸出格式,通過定義每一條日志信息的級別,我們能夠更加細致地控制日志的生成過程.日志是日記中的一種,多指非個人的,一般是記載每天所做的工作. Mybatis支持log4j,我們只需把log4j的jar包導入到項目以及完成log4j的配置文件即可.Mybatis就可以通過log4j把Mybatis執行的sql語句打印出來. log4j的配置文檔在Mybatis的源碼包有,路徑-->E:\Mybatis\mybatis-3-mybatis-3.2.8\src\test\java\log4j.properties 把配置文件加載在src下.
    查看全部
  • OGNL表達式語言可以直接調用JAVA對象的方法. <if text="command!=null and ! &quot;&quot;.equals(command.trim())"> 除了屬性值那個""雙引號之外,因為在XML中非屬性值的雙引號需要用轉譯字符,與HTML相同,即&quot;&quot; 在xml中不能直接使用&&(與)這個操作符,必須要轉譯字符,即&amp;&amp;或者直接用OGNL自己的and操作符,在XML中是支持的. 使用#{變量名}來為sql傳遞參數.變量名與OGNL的寫法一樣,但不是OGNL表達式.(自定義類型->屬性名,數組->array[index]) 即: <select parameterType="com.imooc.Message" id="find"> select * from Message where 1=1 <if text="command!=null and ! &quot;&quot;.equals(command.trim())"> and command=#{command} </if> </select> MyBatis中可以使用OGNL的地方有兩處: ?動態SQL表達式中 ?${param}參數中 上面代碼中test的值會使用OGNL計算結果。
    查看全部
  • 在OGNL中經常需要用到操作符來進行判斷. 即在<if text="">標簽的text屬性值中就經常要用到操作符來進行判斷. 在GONL中支持JAVA的常用操作符,以及會有自己特有的操作符.
    查看全部
  • 從集合(包括數組、list、Map)類型中取出一條數據. 即假如parameterType="集合類型",那么怎樣通過<if text="">標簽取出集合中的一條數據來進行判斷. 如果parameterType="String或基本數據類型的數組",則在<if text="array[索引](String[])"> //根據索引獲取數組中的一個元素. 如果parameterType="自定義類型的數組",則在<if text="array[索引].屬性名(Message[])"> //根據索引獲取數組中的一個對象的一個屬性. 如果parameterType="List<String>"類型,則在<if text="list[索引](List<String>)"> 如果parameterType="List<Message>"集合泛型是自定義類型,則在<if text="list[索引].屬性名(List<Message>)"> 如果parameterType="Map<String,String>"類型,則在<if text="_parameter.key(Map<String,String>)"> //其中_parameter在Map中是可以省略不寫的. 如果parameterType="Map<String,Message>"類型,則在<if text="key.屬性名(Map<String,Message>)"> 像list與Array中需要提供一個索引來獲取值,一般我們不知道明確的索引位置.但通常會明確知道Map集中的key值.這種寫法用在Map較多. 在項目中經常用<foreach>標簽取出list與Array集合中的每一條數據.此標簽不需要用OGNL表達式.foreach標簽可以用在數組、List與Map中. <foreach collection="array" index="i" item="item"> 其中collection屬性是指向一個完整的集合.可以是array(數組)、list(List集)、_parameter(Map集) index屬性在數組與List集合中是索引(下標),在Map中是key值. item屬性就是遍歷當中的具體某個屬性.在Map中指的是value.如果item是自定義類型,那么就是item.屬性名
    查看全部
  • 把方法的參數傳遞給Sql配置文件,SqlSession對象提供兩個參數的select()、update()等方法,第一個參數是對應的sql語句的id屬性值,第二個為傳給Mybatis的參數.但一次只能傳一個參數,所以當有多個參數的時候,可以把參數封裝在一個javabean的對象中,因為javabean會對應表的字段.要傳遞的參數值會跟javabean的屬性匹配. public List<Message> getMessage(String command,String description){ List<Message> list=new ArrayList<Message>(); SqlSession sqlSession=Util.getSqlSession(); Message m=new Message(); m.setCommand(command); m.setDescription(description); list=sqlSession.selectList("find",m); return list; } Sql配置文件接收參數的方法是在對應sql語句的標簽上加上parameterType屬性. 屬性值就是傳遞過來參數的數據類型. <select id="find" parameterType="com.imooc.Message" resultMap="result1"> select * from Message where 1=1 <if test="command!=null"> and command=#{command} </if> </select> 其中在<if test="">標簽下,屬性值是用OGNL表達式來寫的. 如果傳過來的參數的類型是String以及基本數據類型,那么標簽中的OGNL表達式寫法就必須是_parameter.如果傳過來的參數是自定義類型.即本筆記例子,則直接用屬性名(command)即可. 不同的parameterType=""參數類型在OGNL表達式中會有不同的寫法.
    查看全部
  • 動態 SQL MyBatis 的強大特性之一便是它的動態 SQL。如果你有使用 JDBC 或其他類似框架的經驗,你就能體會到根據不同條件拼接 SQL 語句有多么痛苦。拼接的時候要確保不能忘了必要的空格,還要注意省掉列名列表最后的逗號。利用動態 SQL 這一特性可以徹底擺脫這種痛苦。 通常使用動態 SQL 不可能是獨立的一部分,MyBatis 當然使用一種強大的動態 SQL 語言來改進這種情形,這種語言可以被用在任意的 SQL 映射語句中。 動態 SQL 元素和使用 JSTL 或其他類似基于 XML 的文本處理器相似。在 MyBatis 之前的版本中,有很多的元素需要來了解。MyBatis 3 大大提升了它們,現在用不到原先一半的元素就可以了。MyBatis 采用功能強大的基于 OGNL 的表達式來消除其他元素。 動態 SQL 通常要做的事情是有條件地包含 where 子句的一部分,與<if test="">標簽配合使用。比如: <select id="find" parameterType="Blog" resultType="Blog"> SELECT * FROM BLOG WHERE state = ‘ACTIVE’ <if test="title != null"> AND title like #{title} </if> </select> 這條語句提供了一個可選的文本查找類型的功能。如果沒有傳入“title”,那么所有處于“ACTIVE”狀態的BLOG都會返回;反之若傳入了“title”,那么就會把模糊查找“title”內容的BLOG結果返回(就這個例子而言,細心的讀者會發現其中的參數值是可以包含一些掩碼或通配符的)。
    查看全部
  • 一個完整的Sql配置文件: <mapper namespace="User"> <resultMap type="UserAlias" id="UserResult"> <id column="id" jdbcType="INTEGER" property="id"/> <result column="username" jdbcType="VARCHAR" property="username"/> <result column="password" jdbcType="VARCHAR" property="password.encrypted"/> <result column="administrator" jdbcType="BOOLEAN" property="administrator"/> </resultMap> <select id="find" parameterType="long" resultMap="UserResult"> SELECT * FROM user WHERE id = #{id:INTEGER} </select> <delete id="delete" parameterType="UserAlias"> DELETE FROM user WHERE id = #{id:INTEGER} </delete> <insert id="insert" parameterType="UserAlias" useGeneratedKeys="false"> .....//省略 </insert> <update id="update" parameterType="UserAlias"> UPDATE user SET username = #{username,jdbcType=VARCHAR}, password = #{password.encrypted,jdbcType=VARCHAR}, administrator = #{administrator,jdbcType=BOOLEAN} WHERE id = #{id,jdbcType=INTEGER} </update> </mapper>
    查看全部
  • 當配置好Sql配置文件,最后要在主配置文件configuration.xml中的<mappers>標簽下的<mapper>子標簽的resource屬性來指明要關聯的Sql配置文件.一個<mappers>標簽下可以有多個<mapper>標簽,即一個configuration配置文件可以關聯多個Sql配置文件. <mappers> <mapper resource="com/imooc/config/User.xml"/> </mappers>
    查看全部
  • Sql配置文檔中會有<resultMap>標簽,用來配置數據庫表字段與javabean屬性的關聯. <resultMap type="UserAlias" id="UserResult"> <id column="id" jdbcType="INTEGER" property="id"></id> <result column="username" jdbcType="VARCHAR" property="username"></result> <result column="password" jdbcType="VARCHAR" property="password.encrypted"></result> <result column="administrator" jdbcType="BOOLEAN" property="administrator"></result> </resultMap> 其中<resultMap>標簽有type、id屬性.type屬性指定對應的javabean,id屬性就是標識符. 在<resultMap>標簽下有<id>與<result>子標簽,<id>標簽對應數據庫表的主鍵.普通的字段則用<result>標簽,它們都有column、jdbcType、property屬性.column屬性對應數據庫表的字段名,jdbcType屬性對應該字段名的數據庫中的數據類型.(即java.sql.Types下的屬性名int對應Integer),property屬性對應javabean的屬性名. <select>標簽有resultMap屬性,屬性值與<resultMap>中的id屬性的屬性值一樣.resultMap屬性用來指定此sql語句將在此resultMap中尋找映射關系. <select id="find" resultMap="UserResult"> select * from user where 1=1; </select>
    查看全部
  • 創建Sql配置文件 可以在mybatis-3-mybatis-3.2.8\src\test\java\org\apache\ibatis\submitted\complex_property下的User.xml.把Sql配置文件直接放在src下即可. Sql配置文件的作用是配置Sql語句提供給SqlSession,讓它能讀到并且執行.可以讓一個javabean對應一個Sql配置文件.Sql配置文件里面有很多<select>、<update>、<insert>、<delete>標簽,都有一個id屬性.標簽之間會有對應的sql語句. 在多個Sql配置文件之間標簽的id屬性屬性值都不可以重復.但是在不同Sql配置文件中都有<mapper namespace="">標簽,如果多個Sql配置文件的namespace屬性值都不同,那么這多個Sql配置文件之間可以出現標簽的id屬性值重復. 在同一個Sql文件中的同一個域中不能出現兩個相同的id. Sql配置文件<mapper>標簽一定要存在namespace屬性,否則會加載錯誤. SqlSession對象的select()、selectList()、delete()、insert()、udpate()方法可以執行Sql配置文件中標簽下的sql語句,參數都是在Sql配置文件中標簽的id屬性的屬性值.如果不同sql配置文件的<mapper namespace="">標簽的namespace屬性值都不一樣,則可能會出現相同的id屬性值的標簽.因此在調用方法的參數中應該加上namespace前綴,即select("namespace.id"); 其中selectList()是查詢返回一個集合.select()是查詢一條記錄返回一個對象.
    查看全部

舉報

0/150
提交
取消
課程須知
各位小伙伴們需要有一定Java Web開發基礎,至少需要掌握以下內容: 1、JSP、Servlet、JSTL、EL 2、JS/JQUERY 3、JDBC 如果你還是新人,建議先移步網站相關課程,在理解并掌握相關知識之后再回來進修
老師告訴你能學到什么?
1、 Mybatis 的下載與配置 2、 Mybatis 的基本功能應用 3、 融合 Mybatis 的一個完整小案例的實戰 4、 Mybatis 的特征總結 5、 Mybatis 常見 QA

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!