您的位置:首页 > 编程语言 > Java开发

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

2015-07-29 15:29 423 查看
http://www.tashan10.com/spring3mybatismysqlzheng-he-xiang-jie-wu/

下面来看java代码:

Control层代码:
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/

######Service层代码:

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
注解,表示需要进行事务管理(这里我没有写事务相关的代码)。

DAO层代码:
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层只需要这样一个接口就行了。在配置文件中作如下配置:

<!-- 数据映射器类  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整合详解(四)

整个结构就是这样。需要完整源代码的请访问Spring3+mybatis+mysql整合实例,进行下载(不含jar包)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: