-
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提交表單! Connection為何不需要commit();因為conn.setAutoCommit(true);設置為自動提交,而我們MyBatis把它封裝后,setAutoCommit(false);所以需要手動提交事務。Connection為何不需要commit();因為conn.setAutoCommit(true);設置為自動提交,而我們MyBatis把它封裝后,setAutoCommit(false);所以需要手動提交事務。查看全部
-
Ps1:順序(從高層到底層):servlet負責接收頁面的值和向頁面傳值。如果有業務邏輯需要處理則調用相應的service。service接收servlet傳過來的值,并對其進行處理,做業務的操作,算法等等,如果有需要則調用相應的dao層。dao層完成與數據庫的交互,執行相應的SQL語句。 Ps2:basePath后面默認有個“/”。 Ps3: <servlet-mapping> <servlet-name>...</servlet-name> <url-pattern>/Servlet.action</url-pattern>//推薦使用這種方式,不推薦使用帶“/”方式,因為跳轉的時候需要處理。這樣一來可以避免這個處理問題。 </servlet-mapping> Ps4:增刪改與查詢不一樣,MyBatis查詢默認有事務提交,但增刪改需要手動提交事務。查看全部
-
應用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:為不同包配不同的級別,把總的覆蓋,可看到自己想看的信息查看全部
-
//通過配置文件獲取數據庫連接信息 Reader reader=Resources.getResourceAsReaser("config/Configuration.xml"); //通過配置信息構建一個sqlSessinfactory SqlSessionFactory sqlSessionFactory=new SqlSessionfactoryBuilder(reader); //通過sqlSessionFactory打開一個數據庫回話 SqlSession sqlsession=sqlSessionFactory.openSession();查看全部
-
ognl可以直接調用Java類的方法 ognl中的特殊字符需要轉義,如"轉義為" &轉義為&或者寫為其特有操作符and 精確查詢 and COMMAND=#{command} 即用 #{}代替 ? 模糊查詢 and DESCRIPTION like '%' #{description} '%'查看全部
-
OGNL表達式查看全部
-
OGNL表達式查看全部
-
1.在核心配置文件中指定要執行的sql配置文件的路徑,使用<mappers>,可以添加多個sql映射文件,指定資源時,使用resource屬性指定資源路徑即可,這樣程序會自動讀取sql配置文件,并創建sqlSessionFactory。 2.配置messege.xml查詢數據庫(sql配置文件),如圖: 執行sqlSession.selectList()方法時,通過配置文件中的select標簽找到sql語句,執行數據庫的查詢,返回的結果通過select標簽中resultMap這樣的一個屬性,去查找resultMap標簽,然后按照resultMap中的標簽中的配置完成java屬性與數據庫字段的對應。 mybatis的sql語句通過xml文件進行配置 sql的配置文件中的<mapper>標簽的namespace要唯一,調用sql語句,eg:sqlSession.selectList("Messages.list");//namespace的名字點上語句的ID <resultMap type="" id="Message">//映射的是封裝返回結果的bean,type是bean的全類名,id要唯一(resultMap中) <id column="ID" jdbcType="VARCHAR" property="id"/> //主鍵使用,column對應的是數據的字段名,jdbcType對應的是數據字段的類型,property對應的是實體的屬性名 <result /> //其他字段使用 </resultMap> 查詢語句: <select id="list" resultMap="Message">sql語句</select> 寫好的sql配置文件,可在mybatis的連接配置文件中引入: <mappers> <mapper resource="sql配置文件路徑" /> </mappers>查看全部
-
Ps1:配置文件的詳細路徑:src/test/java/org/apache/ibatis/submiited/complex_property/Configuration.xml Ps2:小技巧:粘貼類名,再粘貼對象名,改大小寫即可。 Ps3:順序(從底層往高層):實體類-->Dao-->Service-->Servlet-->頁面。 Ps4:數據庫服務啟動即可,無需登錄數據庫操作軟件。 Ps5:Dao層一般與表(實體類)相關,命名一般在實體類名+“Dao”即可;Service層命名一般與Servlet命名對應。 //通過配置文件獲取數據庫連接信息 Reader reader = Resources.getResourceAsReader("config/Configuration.xml"); //通過配置信息構建一個SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessioFactoryBuilder.build(reader); //通過sqlSessionFactory打開一個數據庫會話 SqlSession sqlSession = sqlSeesionFactory.openSession();查看全部
-
AIT+SHIFT+J:自動添加類的文檔注釋 CTRI+SHIFT+Y:大寫轉小寫 CTRI+SHIFT+X:小寫轉大寫查看全部
-
Model: 數據表對應的模型; DAO:每個表對應一個DAO,對該表的一些操作。 Service:或Logic層,跟Servlet對應,一些相關的業務功能。 Servlet: 設置編碼/過濾器;接受頁面的值;向頁面傳值;業務需要調用service;跳轉。查看全部
-
@關鍵代碼(技巧): StringBuilder sql=new StringBuilder("select ID,COMMAND,DESCRIPTION,CONTENT from menssage wherr1=1"); List<String>paramList=new ArrayList<String>(); if(command!==null&&!"".equals(sommand,trim())){ sql.append("and COMMAND=?"); paramList.sdd(command); } if(description!=null&&"".equals(description.trim())){ sql.append("and DESCRIPTION like'%'?'%')//mysql語法:%空格?空格% paramList.add(sexcription); } perpaergStatement pstmt=conn.prepareStatement(sql.toString()); for(int i=0;i<paramList.size();i++){ pstmt.setString(i+1,paramList.get(i)); } ResultSet rs=pstmt.executeQuery(); 注意1:preparedStatement 語句要在sql語句還沒有準好后面,但要在循環前面, 注意2:為何不直接在if語句后面寫“?”的內容了。因為不知道問號序號是多少,不好控制 ps1 tomcat啟動一般用Debug.只要不要設置斷點,。效果與run是一樣的,這樣一來,如果想調試就設置斷點即可,不需要在切換Debug模式(ps:Debug模式下,修改java代碼會自動上傳到服務器,不需要重新啟動toncat) pa2:sql=“”;//這樣寫不好,因為原來的字符串占用內存還在,推薦使用StringBuffer,StringBuilder.查看全部
-
@關鍵代碼(技巧): StringBuilder sql=new StringBuilder(" select ID,COMMAND,DESCRIPTION,CONTENT from message where 1=1 "); List<String> paramList=new ArrayList<String>(); if(command!=null&&!"".equals(command.trim())){ sql.append(" and COMMAND=? "); paramList.add(command); } if(description!=null&&!"".equals(description.trim())){ sql.append(" and DESCRIPTION like '%' ? '%' ");//MySql語法:'%'空格?空格'%' paramList.add(description); } PreparedStatement pstmt=conn.prepareStatement(sql.toString()); for(int i=0;i<paramList.size();i++){ pstmt.setString(i+1,paramList.get(i)); } ResultSet rs=pstmt.executeQuery(); 注意1:PreparedStatement語句要在sql語句還沒準備好后面,但要在循環前面。 注意2:為何不直接在if語句后寫“?”的內容呢?因為不知道問號序號是多少,不好控制。 Ps1:Tomcat啟動一般用Debug,只要不要設置斷點,效果與Run是一樣的,這樣一來,如果想調試就設置斷點即可,不需要再切換到Debug模式(Ps:Debug模式下,修改Java代碼會自動上傳到服務器,無需重新啟動Tomcat) Ps2:sql+="";//這樣寫不好,因為原來的字符串占用內存還在,推薦使用StringBuffer、StringBuilder。查看全部
-
1.載入JSTL中的c標簽:<%@ taglib prefix="c" uri="http://java.sum.com/jsp/jstl/core" %> 2.利用c標簽來進行foreach循環和if判斷 <c:forEach items="${messageList}" var="message" varStatus="status"> <tr <c:if test="${status.index % 2 != 0}">style='background-color:#ECF6EE;'</c:if>> <td><input type="checkbox" name="id" value="${message.id}"/></td> <td>${status.index + 1}</td> <td>${message.command}</td> <td>${message.description}</td> <td> </c:forEach>查看全部
-
不要寫select*要直接寫列名提高查詢效率查看全部
舉報
0/150
提交
取消