真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

spring、mybatis配置方式有哪些

這篇文章將為大家詳細講解有關(guān)spring、mybatis配置方式有哪些,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)建站憑借在網(wǎng)站建設(shè)、網(wǎng)站推廣領(lǐng)域領(lǐng)先的技術(shù)能力和多年的行業(yè)經(jīng)驗,為客戶提供超值的營銷型網(wǎng)站建設(shè)服務(wù),我們始終認為:好的營銷型網(wǎng)站就是好的業(yè)務(wù)員。我們已成功為企業(yè)單位、個人等客戶提供了成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)服務(wù),以良好的商業(yè)信譽,完善的服務(wù)及深厚的技術(shù)力量處于同行領(lǐng)先地位。

一、 動態(tài)代理實現(xiàn) 不用寫dao的實現(xiàn)類

這種方式比較簡單,不用實現(xiàn)dao層,只需要定義接口就可以了,這里只是為了記錄配置文件所以程序?qū)懙暮芎唵危?/p>

1、整體結(jié)構(gòu)圖:

spring、mybatis配置方式有哪些

2、三個配置文件以及一個映射文件

(1)、程序入口以及前端控制器配置 web.xml

 
 
 website1 
  
  
  org.springframework.web.context.ContextLoaderListener 
  
  
  
  contextConfigLocation 
   
  classpath:config/springmvc-servlet.xml, 
  classpath:config/ApplicationContext.xml 
   
  
  
  
  encodingFilter 
  org.springframework.web.filter.CharacterEncodingFilter 
   
   encoding 
   utf-8 
   
   
   forceEncoding 
   true 
   
  
  
  encodingFilter 
  *.do 
  
  
  
  springmvc 
  org.springframework.web.servlet.DispatcherServlet 
   
   contextConfigLocation 
   classpath:config/springmvc-servlet.xml 
   
   
  1 
  
  
  springmvc 
   
  *.do 
  
  
  index.html 
  index.htm 
  index.jsp 
  default.html 
  default.htm 
  default.jsp 
  

  (2)、掃描控制層、自動注入以及視圖解析器的配置 springmvc-servlet.xml

 
 
  
  
  
  
  
  
  
  
   
   
   
  

(3)、數(shù)據(jù)源、service 自動掃描注入、spring代管mybatissqlsessionFactory 、dao層接口動態(tài)代理以及事務(wù)的配置ApplicationContext.xml

這里會有多中配置文件

1)、單數(shù)據(jù)源,動態(tài)代理實現(xiàn)dao層接口時不設(shè)置sqlSessionFactoryBeanName、或sqlSessionTemplateBeanName 兩個屬性的值

 
 
  
  
  
  
   
   ${jdbc.driverClassName} 
   
   
   ${jdbc.url} 
   
   
   ${jdbc.username} 
   
   
   ${jdbc.password} 
   
  
  
  
  
  
  
  
   
   
   
   
   
  
  
  
  
   
   
   
   
   
   
  
  
  
   
  
  
  

2)、單數(shù)據(jù)源配置 sqlSessionFactoryBeanName 這個屬性值

 
 
  
  
  
  
   
   ${jdbc.driverClassName} 
   
   
   ${jdbc.url} 
   
   
   ${jdbc.username} 
   
   
   ${jdbc.password} 
   
  
  
  
  
  
  
  
   
   
   
   
   
  
  
  
  
   
   
   
   
   
   
  
  
  
   
  
  
  

3)、單數(shù)據(jù)源配置sqlSessionTemplateBeanName 這個屬性值

 
 
  
  
  
  
   
   ${jdbc.driverClassName} 
   
   
   ${jdbc.url} 
   
   
   ${jdbc.username} 
   
   
   ${jdbc.password} 
   
  
  
  
  
  
  
  
   
   
   
   
   
  
  
   
    
   
  
  
  
   
   
   
   
   
   
  
  
  
   
  
  
  

4)、多數(shù)據(jù)源

注意如果是多數(shù)據(jù)源則一定要使用sqlSessionFactoryBeanName 或sqlSessionTemplateBeanName 來指定具體的數(shù)據(jù)源,不知道在上面的配置中有沒有注意到,如果使用sqlSessionTemplateBeanName 的話要

 
   
    
   
 

來創(chuàng)建具體的實例并賦值給sqlSessionTemplateBeanName 這個屬性。

(4)、mybatis SQL映射文件 userMapper.xml:

 
 
 
 
  
  
  insert into user(id,name) values(#{id},#{name}) 
  

ok  到這里配置文件到搞定了下面來看看控制層,業(yè)務(wù)邏輯層以及dao層的代碼。

3、controller層

package com.website.controller; 
import java.util.HashMap; 
import java.util.Map; 
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.bind.annotation.RequestMethod; 
import com.website.service.UserService; 
@Controller 
@RequestMapping(value = "/user") 
public class UserController { 
 // 注入userService 對象 
 @Autowired 
 private UserService userService; 
 @RequestMapping(value = "/save.do", method = RequestMethod.GET) 
 public String saveUser(HttpServletRequest request, 
  HttpServletResponse response) { 
 String id = request.getParameter("id"); 
 String name = request.getParameter("name"); 
 Map map = new HashMap(); 
 map.put("id", id); 
 map.put("name", name); 
 userService.saveUser(map); 
 return "index"; 
 } 
}

4、service層

package com.website.service; 
import java.util.Map; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Service; 
import org.springframework.transaction.annotation.Transactional; 
import com.website.dao.UserDao; 
@Service("userService") 
@Transactional 
public class UserService { 
 // 注入dao接口實現(xiàn)類實例 
 // @Resource、@Autowired兩種注入方式都可以 
 @Autowired 
 private UserDao userDao; 
 public void saveUser(Map map) { 
 int end = userDao.saveUser(map); 
 System.out.println("end:" + end); 
 } 
}

5、dao 層 接口

package com.website.dao; 
import java.util.Map; 
//com.website.dao.UserDao 
public interface UserDao { 
 int saveUser(Map map); 
}

dao 接口的完整路勁就是這個dao 接口對應(yīng)的那個映射文件的namespace 而方法名就是 id的值

ok到這里這種配置方式都完了,也有了一個完整的小demo,下面我們簡單總結(jié)一下:

這種配置方式相比之前的配置方式(下面也會寫出來)特別之處就是他使用了dao層接口的動態(tài)代理方式實現(xiàn)了,之前我們會在dao層自己手動實現(xiàn)dao層然后自動注入SqlSessionTemplate 實例來調(diào)用具體的方法 比如 insert("","")  selectOne("","") 等方法 其中第一個參數(shù)就是映射文件的地址: namespace+id  而第二個參數(shù)就是傳遞的條件這樣mybatis 就會按照我們傳遞的這兩個參數(shù)找到具體的映射文件進行解析查詢。而這里使用動態(tài)代理就省去了我們實現(xiàn)dao接口的這一步驟,而是由spring提我們實現(xiàn)了,那有個問題,查詢條件參數(shù)我們傳遞了,但映射文件的具體路徑即:namespce+id  沒有傳遞怎么辦,那就是你的映射文件的namespace 必須是接口的類全名稱而id 必須是接口中的方法名稱,這樣動態(tài)代理就能找到路勁了也有了參數(shù)了。 這樣一來是不是覺得就一樣了啊哈哈哈!

二、手動實現(xiàn)dao層接口

下面先來看看手動實現(xiàn)dao層的配置以及代碼:

1、正題結(jié)構(gòu)圖

spring、mybatis配置方式有哪些

2、三個配置文件以及映射文件

(1)、程序入口,前端控制器配置 web.xml

 
 
 website2 
  
  
 org.springframework.web.context.ContextLoaderListener 
  
  
  
 contextConfigLocation 
  
  classpath:config/springmvc-servlet.xml, 
  classpath:config/ApplicationContext.xml 
  
  
  
  
 encodingFilter 
 org.springframework.web.filter.CharacterEncodingFilter 
  
  encoding 
  utf-8 
  
  
  forceEncoding 
  true 
  
  
  
 encodingFilter 
 *.do 
  
  
  
 springmvc 
 org.springframework.web.servlet.DispatcherServlet 
  
  contextConfigLocation 
  classpath:config/springmvc-servlet.xml 
  
  
 1 
  
  
 springmvc 
  
 *.do 
  
  
 index.html 
 index.htm 
 index.jsp 
 default.html 
 default.htm 
 default.jsp 
  

(2)、掃描控制層、自動注入以及視圖解析器的配置 springmvc-servlet.xml

 
 
  
  
  
  
  
  
  
  
  
  
  

(3)、數(shù)據(jù)源、service 自動掃描注入、spring代管mybatissqlsessionFactory 以及事務(wù)的配置ApplicationContext.xml

 
 
  
  
  
  
  
  ${jdbc.driverClassName} 
  
  
  ${jdbc.url} 
  
  
  ${jdbc.username} 
  
  
  ${jdbc.password} 
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
   
  
  
  
  
  
  
  

(4)、mybatis 映射文件

 
 
  
 
 
 
 
 insert into user(id,name,password) values(#{id},#{name},#{password}) 
 

你可能看到了這里的映射文件的namespace +id  是自定義的而不是dao 層接口的全類名+id

3、控制層Controller

package com.website.controller; 
import java.util.HashMap; 
import java.util.Map; 
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 com.website.service.UserService; 
/** 
 * @author WHD data 2016年6月5日 
 */ 
@Controller 
@RequestMapping(value = "/user") 
public class UserController { 
 @Autowired 
 private UserService userService; 
 @RequestMapping(value = "/save.do") 
 public String saveUser(HttpServletRequest request, 
  HttpServletResponse response) { 
 String id = request.getParameter("id"); 
 String name = request.getParameter("name"); 
 String password = request.getParameter("password"); 
 Map map = new HashMap(); 
 map.put("id", id); 
 map.put("name", name); 
 map.put("password", password); 
 userService.saveUser(map); 
 return "index"; 
 } 
}

4、業(yè)務(wù)邏輯層 service

package com.website.service; 
import java.util.Map; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Service; 
import org.springframework.transaction.annotation.Transactional; 
import com.website.dao.UserDao; 
/** 
 * @author WHD data 2016年6月5日 
 */ 
@Service("userService") 
@Transactional 
public class UserService { 
 @Autowired 
 private UserDao userDao; 
 public void saveUser(Map map) { 
 userDao.saveUser(map); 
 } 
}

5、dao層

package com.website.dao; 
import java.util.Map; 
import org.mybatis.spring.SqlSessionTemplate; 
import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Repository; 
/** 
 * @author WHD data 2016年6月5日 
 */ 
@Repository("userDao") 
public class UserDao { 
 @Autowired 
 private SqlSessionTemplate sqlSession; 
 public void saveUser(Map map) { 
 int end = sqlSession.insert("com.website.userMapper.insertUser", map); 
 System.out.println("end" + end); 
 } 
}

我們看倒dao層的 SqlSessionTemplate  這個其實是mybatis中的SqlSession 對象,我們看到在ApplicationContext.xml 中配置了,所以在我們使用時spring會幫我們自動注入,我們直接使用就可以了不用去自己創(chuàng)建,這也就是所謂的控制反轉(zhuǎn)。ok 到此兩種文件的配置方式就結(jié)束了。

關(guān)于“spring、mybatis配置方式有哪些”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。


網(wǎng)頁題目:spring、mybatis配置方式有哪些
文章來源:http://weahome.cn/article/gcceie.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部