`

Spring3+mybatis+mysql整合详解(五)

阅读更多

下面来看java代码:

1、Control层代码:

 

Java代码 复制代码 收藏代码
  1. package com.hl.usersmanager.controller;   
  2.   
  3. import java.util.List;   
  4.   
  5. import org.springframework.beans.factory.annotation.Autowired;   
  6. import org.springframework.stereotype.Controller;   
  7. import org.springframework.ui.ModelMap;   
  8. import org.springframework.web.bind.annotation.RequestMapping;   
  9.   
  10. import com.hl.usersmanager.model.Users;   
  11. import com.hl.usersmanager.service.IUserService;   
  12.   
  13. @Controller  
  14. public class UserController {   
  15. //  使用注解实现自动装配 不需要再写get set方法以及在context中配置bean   
  16.     @Autowired  
  17.     private IUserService userService;   
  18.   
  19.     @RequestMapping(value = "findUserByName.do")   
  20.     public String findUserByName(String name,ModelMap model) {   
  21.         Users users = userService.findUserByName(name);   
  22.         model.addAttribute("userPhone",users.getPhone());   
  23.         System.out.println("userPhone:" + users.getPhone());   
  24.         return "showUser";   
  25.     }   
  26.        
  27.     ……   
  28. }  
package com.hl.usersmanager.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;

import com.hl.usersmanager.model.Users;
import com.hl.usersmanager.service.IUserService;

@Controller
public class UserController {
//	使用注解实现自动装配 不需要再写get set方法以及在context中配置bean
	@Autowired
	private IUserService userService;

	@RequestMapping(value = "findUserByName.do")
	public String findUserByName(String name,ModelMap model) {
		Users users = userService.findUserByName(name);
		model.addAttribute("userPhone",users.getPhone());
		System.out.println("userPhone:" + users.getPhone());
		return "showUser";
	}
	
	……
}

 

 在较低版本Spring中,Controller需要实现一个接口,在Spring3中,我们采用注解的方式实现。只需要加入一个@Controller注解即可(当然,你需要在配置文件中开启注解功能。可参考Spring3+mybatis+mysql整合详解(三))。

再使用注解声明一个IUserService(Service层接口)属性。

 @RequestMapping(value = "findUserByName.do")表示拦截findUserByName.do的请求,交由被注解的方法处理。

findUserByName方法有两个参数,第一个参数name从页面上传入。由于我们需要找到Users后将其userPhone属性返回给页面,所以我们需要第二个参数model。这个参数由Spring自行封装,我们不管它。然后将users.getPhone()放入model中。就好像我们往response中放参数一样。

最后返回一个String类型的showUser,告诉Spring mvc这个Controller执行完了需要返回到showUser这个视图。具体由哪个页面进行渲染,由Spring mvc的视图解析器配置决定。当然findUserByName也可以使用其他返回类型。

这里有篇帖子讲得比较详细,分享给大家:

http://www.ibm.com/developerworks/cn/java/j-lo-spring25-mvc/

 

2、Service层代码

 

Java代码 复制代码 收藏代码
  1. package com.hl.usersmanager.service.impl;   
  2.   
  3. import java.util.List;   
  4.   
  5. import org.springframework.beans.factory.annotation.Autowired;   
  6. import org.springframework.stereotype.Service;   
  7. import org.springframework.transaction.annotation.Transactional;   
  8.   
  9. import com.hl.usersmanager.dao.IUserMapper;   
  10. import com.hl.usersmanager.model.Users;   
  11. import com.hl.usersmanager.service.IUserService;   
  12.   
  13. //使用Service注解 不需要再在配置文件中配置bean   
  14. @Service  
  15. public class UserServiceImpl implements IUserService{   
  16.     @Autowired  
  17.     private IUserMapper userMapper;   
  18.        
  19.     @Override  
  20.     @Transactional  
  21.     public Users findUserByName(String name) {   
  22.         return userMapper.findUserByName(name);   
  23.     }   
  24.   
  25.     ……   
  26. }  
package com.hl.usersmanager.service.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.hl.usersmanager.dao.IUserMapper;
import com.hl.usersmanager.model.Users;
import com.hl.usersmanager.service.IUserService;

//使用Service注解 不需要再在配置文件中配置bean
@Service
public class UserServiceImpl implements IUserService{
	@Autowired
	private IUserMapper userMapper;
	
	@Override
	@Transactional
	public Users findUserByName(String name) {
		return userMapper.findUserByName(name);
	}

	……
}

 首先,我们在Service层IUserService的实现类上加入@Service注解。UserController中就会自动装载这个bean。

这里我们配置了一个 @Transactional注解,表示需要进行事务管理(这里我没有写事务相关的代码)。

3、DAO层代码

 

Java代码 复制代码 收藏代码
  1. package com.hl.usersmanager.dao;   
  2.   
  3. import java.util.List;   
  4.   
  5. import com.hl.usersmanager.model.Users;   
  6.   
  7. public interface IUserMapper {   
  8.     public Integer insertUser(Users user);      
  9.        
  10.     public List<Users> findAllUsers();   
  11.        
  12.         public Users findUserByName(String name);   
  13.        
  14. }  
package com.hl.usersmanager.dao;

import java.util.List;

import com.hl.usersmanager.model.Users;

public interface IUserMapper {
	public Integer insertUser(Users user);   
	
	public List<Users> findAllUsers();
	
        public Users findUserByName(String name);
    
}

 使用Mybatis+Spring后,dao层只需要这样一个接口就行了。在配置文件中作如下配置:

 

Xml代码 复制代码 收藏代码
  1. <!-- 数据映射器类  mapper bean -->  
  2. <bean id="UserMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">  
  3.     <property name="sqlSessionFactory" ref="SqlSessionFactory" />  
  4.     <!-- 注意指定的映射器类必须是一个接口,而不是具体的实现类  -->  
  5.     <property name="mapperInterface" value="com.hl.usersmanager.dao.IUserMapper" />  
  6. </bean>  
	<!-- 数据映射器类  mapper bean -->
	<bean id="UserMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
		<property name="sqlSessionFactory" ref="SqlSessionFactory" />
		<!-- 注意指定的映射器类必须是一个接口,而不是具体的实现类  -->
	    <property name="mapperInterface" value="com.hl.usersmanager.dao.IUserMapper" />
	</bean>

 Mybatis会自动创建代理类,执行接口中的方法。当然还需要数据映射器的配置。参见Spring3+mybatis+mysql整合详解(四)。

 

整个结构就是这样。需要完整源代码的请访问http://my249645546.iteye.com/blog/1413847 ,进行下载(不含jar包)

分享到:
评论
1 楼 myemptyname 2012-07-17  
markmarkmarkmark

相关推荐

Global site tag (gtag.js) - Google Analytics