-
Mybatis中的標簽查看全部
-
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"></id> //主鍵使用,column對應的是數據的字段名,jdbcType對應的是數據字段的類型,property對應的是實體的屬性名 <result ></result> //其他字段使用 </resultMap> 查詢語句: <select id="list" resultMap="Message">sql語句</select> 寫好的sql配置文件,可在mybatis的連接配置文件中引入: <mappers> <mapper resource="sql配置文件路徑" ></mapper> </mappers> <mappers>中子標簽<mapper>的resource屬性也是從src根目錄開始算起,“.”改為“/”;如果有多個<mapper>則需添加多個。查看全部
-
mybatis核心類sqlSession,獲取的方法如下: public SqlSession getSqlSession() throws IOException { //通過配置文件獲取數據庫連接信息 Reader reader = Resources.getResourceAsReader("Configuration.xml"); //通過配置信息構建一個SqlSessiojnFactory SqlSessionFactory sf = new SqlSessionFactoryBuilder().build(reader); //通過sqlSessionFactory打開一個數據庫會話 SqlSession sqlSession = sqlSessionFactory.openSession(); return sqlSession; }查看全部
-
SqlSession其實就是一次關于數據庫的會話!<br> 每一個目錄都是有它自己明確的含義,無規矩不成方圓,所以盡量的進行分層,這樣子用戶看代碼也是比較省力的!<br> 寫代碼不寫注釋,這是非常不像話的!<br> mybatis的下載地址:https://github.com/mybatis/mybatis-3/releases 配置文件的詳細路徑:src/test/java/org/apache/ibatis/submiited/complex_property/Configuration.xml //通過配置文件獲取數據庫連接信息 Reader reader = Resources.getResourceAsReader("config/Configuration.xml"); //通過配置信息構建一個SqlSessionFactory SqlSessionFactory sqlSessionFactory = new SqlSessioFactoryBuilder.build(reader); //通過sqlSessionFactory打開一個數據庫會話 SqlSession sqlSession = sqlSeesionFactory.openSession(); dao 層只是用來執行SQL語句,獲取操作結果封裝信息,返回結果,并不是用來加載驅動獲取連接 如何分層,為什么要分層。一個servlet類包含了太多代碼,把數據庫相關表操作放到了dao層,把業務相關操作放到了service層,service層依賴dao層的對象,這里是直接new出來,如果采用spring框架,可以通過依賴注入dao的對象。servlet依賴service對象,一樣是new的,不過這樣分層不同功能的代碼就分出去了。servlet作為一個控制類,基本做這幾樣事情:一些配置,例如設置編碼,這部分重復工作可以通過過濾器統一處理。獲取請求參數,當然也可以通過過濾器處理,這也是其他一些mvc框架,例如struts,springmv要做的數據綁定功能,然后是調用業務類處理業務,一個項目主要就是在寫業務了。最后就是跳轉頁面。所以servlet應該只做控制的事情查看全部
-
MyBatis之SqlSession查看全部
-
Mybatis之SqlSession SqlSession的作用 (1)向 SQL 語句傳入參數 (2)執行SQL語句 (3)獲取執行SQL語句的結果 (4)事務的控制 //通過配置文件獲取數據庫連接信息 Reader reader=Resources.getResourceAsReaser("config/Configuration.xml"); //通過配置信息構建一個sqlSessinfactory SqlSessionFactory sqlSessionFactory=new SqlSessionfactoryBuilder(reader); //通過sqlSessionFactory打開一個數據庫回話 SqlSession sqlsession=sqlSessionFactory.openSession(); 如何得到SqlSession:<br> (1)通過配置文件獲取數據庫連接相關信息<br> (2)通過配置信息構建SqlSessionFactory (3)通過SqlSessionFactory打開數據庫回話查看全部
-
DAO層應該做的事是:執行SQL語句,獲取操作結果封裝信息,返回操作結果查看全部
-
Ps1:配置文件的詳細路徑:src/test/java/org/apache/ibatis/submiited/complex_property/Configuration.xml Ps2:小技巧:粘貼類名,再粘貼對象名,改大小寫即可。 Ps3:順序(從底層往高層):實體類-->Dao-->Service-->Servlet-->頁面。 Ps4:數據庫服務啟動即可,無需登錄數據庫操作軟件。 Ps5:Dao層一般與表(實體類)相關,命名一般在實體類名+“Dao”即可;Service層命名一般與Servlet命名對應。查看全部
-
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //1、設置字符編碼 req.setCharacterEncoding("UTF-8"); //2、接收頁面的值 String command =req.getParameter("command"); String description =req.getParameter("description"); //3、向頁面傳值 req.setAttribute("command", command); req.setAttribute("description", description); //4、在這里引入service層(業務層),進行數據庫的操作 ListService listService=new ListService(); //5、向頁面傳值,將查詢到的結果傳到頁面 req.setAttribute("messageList", listService.queryMessageList(command, description)); //6、向頁面跳轉 req.getRequestDispatcher("/WEB-INF/jsp/back/list.jsp").forward(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // TODO Auto-generated method stub this.doGet(req, resp); } }查看全部
-
Model: 數據表對應的模型; DAO:每個表對應一個DAO,對該表的一些操作。 Service:或Logic層,跟Servlet對應,一些相關的業務功能。 Servlet: 設置編碼/過濾器;接受頁面的值;向頁面傳值;業務需要調用service;跳轉。 關于今天的出現的幾個錯誤和學到的新知識: 1,jsp頁面傳值可以使用超鏈接形式為:地址?參數=要傳的值! 2,servlet總采用request.getParameter("參數”)接收; 3,jdbc中對占位符?的復制采用setInt(index,參數)的方式index代表第幾個?。 在Dao層中封裝了與數據庫有關的操作,在service層調用Dao層來處理業務邏輯,在servlet中調用service層中的對象來得到處理的結果,并且返回給頁面 servlet的幾個功能: 1.接受頁面的值 2.向頁面傳值 3.根據業務需要,調用service 4.跳轉頁面 Model: 數據表對應的模型; DAO:每個表對應一個DAO,對該表的一些操作。 Service:或Logic層,跟Servlet對應,一些相關的業務功能。 Servlet: 設置編碼/過濾器;接受頁面的值;向頁面傳值;業務需要調用service;跳轉。查看全部
-
@關鍵代碼(技巧): 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。查看全部
-
三大集合取值查看全部
-
Mybatis中SQL的配置查看全部
-
Mybatis 的SqlSession對象查看全部
-
<c:forEach>標簽中有個varSatus屬性,可以通過其屬性值獲取到本次循環的狀態,如其中的index可以獲取循環的次數(從0開始),可配合if標簽做隔行換色的效果查看全部
舉報
0/150
提交
取消