spring、mybatis配置方式有哪些

这篇文章将为大家详细讲解有关spring、mybatis配置方式有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

创新互联建站凭借在网站建设、网站推广领域领先的技术能力和多年的行业经验,为客户提供超值的营销型网站建设服务,我们始终认为:好的营销型网站就是好的业务员。我们已成功为企业单位、个人等客户提供了成都网站设计、成都网站建设服务,以良好的商业信誉,完善的服务及深厚的技术力量处于同行领先地位。

一、 动态代理实现 不用写dao的实现类

这种方式比较简单,不用实现dao层,只需要定义接口就可以了,这里只是为了记录配置文件所以程序写的很简单:

1、整体结构图:

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)、数据源、service 自动扫描注入、spring代管mybatissqlsessionFactory 、dao层接口动态代理以及事务的配置ApplicationContext.xml

这里会有多中配置文件

1)、单数据源,动态代理实现dao层接口时不设置sqlSessionFactoryBeanName、或sqlSessionTemplateBeanName 两个属性的值

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

2)、单数据源配置 sqlSessionFactoryBeanName 这个属性值

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

3)、单数据源配置sqlSessionTemplateBeanName 这个属性值

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

4)、多数据源

注意如果是多数据源则一定要使用sqlSessionFactoryBeanName 或sqlSessionTemplateBeanName 来指定具体的数据源,不知道在上面的配置中有没有注意到,如果使用sqlSessionTemplateBeanName 的话要

 
   
    
   
 

来创建具体的实例并赋值给sqlSessionTemplateBeanName 这个属性。

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

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

ok  到这里配置文件到搞定了下面来看看控制层,业务逻辑层以及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接口实现类实例 
 // @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 接口对应的那个映射文件的namespace 而方法名就是 id的值

ok到这里这种配置方式都完了,也有了一个完整的小demo,下面我们简单总结一下:

这种配置方式相比之前的配置方式(下面也会写出来)特别之处就是他使用了dao层接口的动态代理方式实现了,之前我们会在dao层自己手动实现dao层然后自动注入SqlSessionTemplate 实例来调用具体的方法 比如 insert("","")  selectOne("","") 等方法 其中第一个参数就是映射文件的地址: namespace+id  而第二个参数就是传递的条件这样mybatis 就会按照我们传递的这两个参数找到具体的映射文件进行解析查询。而这里使用动态代理就省去了我们实现dao接口的这一步骤,而是由spring提我们实现了,那有个问题,查询条件参数我们传递了,但映射文件的具体路径即:namespce+id  没有传递怎么办,那就是你的映射文件的namespace 必须是接口的类全名称而id 必须是接口中的方法名称,这样动态代理就能找到路劲了也有了参数了。 这样一来是不是觉得就一样了啊哈哈哈!

二、手动实现dao层接口

下面先来看看手动实现dao层的配置以及代码:

1、正题结构图

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)、数据源、service 自动扫描注入、spring代管mybatissqlsessionFactory 以及事务的配置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、业务逻辑层 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会帮我们自动注入,我们直接使用就可以了不用去自己创建,这也就是所谓的控制反转。ok 到此两种文件的配置方式就结束了。

关于“spring、mybatis配置方式有哪些”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。


文章名称:spring、mybatis配置方式有哪些
浏览路径:http://myzitong.com/article/gcceie.html