程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> Mybatis 系列(1)—— JSP + Spring + Mybatis+Mysql 框架搭建

Mybatis 系列(1)—— JSP + Spring + Mybatis+Mysql 框架搭建

編輯:關於JSP

Mybatis 系列(1)—— JSP + Spring + Mybatis+Mysql 框架搭建


  小編也是忙裡偷閒的學會java,用吃飯和睡覺前的時間看完了一個Mybatis的介紹,手癢癢的就練了練,學習的時間也不長,兩天時間搭了一個框架,分享給大家。

  MyBatis 是支持普通 SQL查詢,存儲過程和高級映射的優秀持久層框架。MyBatis 消除了幾乎所有的JDBC代碼和參數的手工設置以及結果集的檢索。MyBatis 使用簡單的 XML或注解用於配置和原始映射,將接口和 Java 的POJOs(Plain Old Java Objects,普通的 Java對象)映射成數據庫中的記錄。之前學過了Hibernate,最近抽空學習了一下Mybatis,在兩者直接做了簡單的對比。


【Hibernate與Mybatis簡單對比】



1.從查詢語句上的區別。


  之前用Hibernate開發,都是用封裝好的語句,完全沒有sql的影子,都是調用的方法。但是如果是一些稍微復雜的sql,Mybatis會是一個好的選擇。所以,從查詢效率上來說,對於簡單的查詢,建議用Hibernate封裝好的,這樣 可以節省很多時間,如果你不建議會返回全部字段的話。。那麼大一些的項目,或許會用到復雜的sql語句,Mybatis動手寫還調整方便,看著也知道自己寫的是個啥,不錯的選擇。


2.從對象管理機制角度考慮。


  用Hibernate 是完整的對象/關系映射,它提供了對象狀態管理,使開發者不再需要理會底層數據庫系統的細節。這樣就是面向對象的方法把數據持久化到數據庫中,不用管數據庫裡面的字段之類的內容。Hibernate也可以自己寫SQL來指定需要查詢的字段,但這樣就破壞了Hibernate開發的簡潔性。而Mybatis的SQL是手動編寫的,所以可以按需求指定查詢的字段。

  resultMap是MyBatis中最強大的元素,你可以比使用JDBC調用結果集省掉90%的代碼。也可以讓你做許多JDBC不支持的事。事實上,要寫一個等同類似與交互的映射的復雜的語句。可能要上千行的代碼。ResultMap的目的,就是這樣簡單的語句而不需要多余的結果映射。


3.緩存機制。


  Hibernate中提供了兩級Cache,第一級別的緩存是Session級別的緩存,它是屬於事務范圍的緩存。這一級別的緩存由hibernate管理的,一般情況下無需進行干預;第二級別的緩存是SessionFactory級別的緩存,它是屬於進程范圍或群集范圍的緩存。這一級別的緩存可以進行配置和更改,並且可以動態加載和卸載,屬於多事務級別,要防止事務並發性。緩存是以map的形式進行存儲的(key-id,value-object)。

  在Mybatis中,一級緩存是基於 PerpetualCache(mybatis自帶)的 HashMap 本地緩存,作用范圍為session,所以當session commit或close後,緩存就會被清空。二級緩存默認也是基於 PerpetualCache,但是可以為其制定存儲源。一級緩存緩存的是SQL語句,而二級緩存緩存的是結果對象。

  Hibernate的二級緩存配置在SessionFactory生成的配置文件中進行詳細配置,然後再在具體的表-對象映射中配置是那種緩存。MyBatis的二級緩存配置都是在每個具體的表-對象映射中進行詳細配置,這樣針對不同的表可以自定義不同的緩存機制。




【JSP + Spring + Mybatis+Mysql 框架搭建】



1.建立一個web工程,引入需要的jar包,spring、mybatis和mysql


\


2.web.xml 配置




  MyBatis_Spring3_Jsp
  
    index.jsp
  
  
    encodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    
      encoding
      UTF-8
    
    
      forceEncoding
      true
    
  
  
    encodingFilter
    /*
  
  
    contextConfigLocation
    classpath*:config/applicationContext.xml
  
  
    org.springframework.web.context.ContextLoaderListener
  
  
    
			org.springframework.web.context.ContextCleanupListener
  
  
    mvc-dispatcher
    org.springframework.web.servlet.DispatcherServlet
    1
  
  
    mvc-dispatcher
    /
  
 


3. mvc-dispatcher-servlet.xml 文件配置




	
	
	
	  
      
     
	
		
			/WEB-INF/pages/
		
		
			.jsp
		
	






4. spring applicationContext.XML文件配置


 
 
    
    
    
        
    
    
    
    
      
    
    
     
   
      
      
      
      
     
     
   
  
  
          
  
 


5. 添加Mybatis的配置文件configuration.xml





     
        
          
     
	
	
	    
	
	
	


5. 編寫controller 類,model類 等


UserController類:


package com.yihaomen.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.yihaomen.inter.IUserOperation;
import com.yihaomen.model.Article;
import com.yihaomen.model.User;

@Controller
@RequestMapping("/article")
public class UserController {
    @Autowired
    IUserOperation userMapper;

    @RequestMapping("/list")
    public ModelAndView listall(HttpServletRequest request,HttpServletResponse response){
        List articles=userMapper.getUserArticles(1); 
        ModelAndView mav=new ModelAndView("list");
        mav.addObject("articles",articles);
        return mav;
	}
}


接口類:


package com.yihaomen.inter;

import java.util.List;

import com.yihaomen.model.Article;
import com.yihaomen.model.User;

public interface IUserOperation {
    
	public User selectUserByID(int id);
	public List selectUsers(String userName);	
	public void addUser(User user);
	public void updateUser(User user);
	public void deleteUser(int id);
	
	public List getUserArticles(int id);
	
}



user.xml(sql寫在這裡)







	
	
	
        
        
        
        
    
	

	
	

    


model類:


package com.yihaomen.model;

public class Article {
	
	private int id;
	private User user;
	private String title;
	private String content;
	
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getContent() {
		return content;
	}
	public void setContent(String content) {
		this.content = content;
	}

}


6. JSP

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>




test


  
        ${item.id }--${item.title }--${item.content }



運行效果:







【總結】


1)每個MyBatis應用程序主要都是使用SqlSessionFactory實例的,一個SqlSessionFactory實例可以通過SqlSessionFactoryBuilder獲得。SqlSessionFactoryBuilder可以從一個xml配置文件或者一個預定義的配置類的實例獲得。用xml文件構建SqlSessionFactory實例是非常簡單的事情。


2)看再多的書,還是動手去做吧,這樣理解的深刻。總有一天會熟悉它,時間的問題。




  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved