Mapper接口开发

在MyBatis+Spring 的项目中,虽然使用传统的DAO开发方式可以实现所需功能,但是采用这种方式在实现类中会出现大量的重复代码,在方法中也需要指定映射文件中执行语句的id,并且不能保证编写时id 的正确性。为此,我们可以使用MyBatis提供的另外
一种编程方式,即使用Mapper接口编程。

我们写一个实例来描述Mapper接口编程,首先编写一个接口Dao

import com.mobile.po.UserPo;
/**
 * UserDao层
 * @author CHRISTMASY
 *
 */
public interface UserDao{
	public UserPo findByName(String name);
}

并在其同级目录下创建同名的xml映射文件。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
	"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
	<mapper namespace="com.mobile.dao.UserDao">
		<!-- 查询用户信息byName -->
		<select id="findByName" parameterType="String" resultType="UserPo">
			select * from s_user where UserNuber = #{UserNuber}
		</select>
	</mapper>

上面这些工作完成之后,我们就可以在spring配置文件中创建一个Bean对dao包进行扫描

	<!-- 接口开发,扫描com.itheima.core.dao,写在此包下的接口将会被扫描到 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.mobile.dao"/>
	</bean>

接下来就是在Service层实现Dao了,这里就不详细讲解,我们直接在controller中调用。


@Controller
@RequestMapping("/user")
public class UserController {
	@Autowired
	private IUserService service;
	/**
	 * 登录
	 * @param userPo
	 * @return
	 */
	@RequestMapping(value="/login",method=RequestMethod.POST)
	@ResponseBody
	public String Login(UserPo userPo,HttpSession session){
		UserPo po = service.findByName(userPo.getUserNuber());
		if(po!=null){
			if(po.getPassWord().equals(MD5Util.getMD5(userPo.getPassWord()))){
				session.setAttribute("USER_INFO", po);
				if(po.getUserTypeID()==1){
					return "boss";
				}else{
					return "staff";
				}
				
			}else{
				return "密码错误!";
			}
		}else{
			return "该用户不存在!";
		}
	}

可以运行项目测试结果

虽然Mapper接口编程方式很简单,但是在具体使用时还是需要遵循以下规范:

1)	Mapper接口的名称和对应的Mapper.xml映射文件的名称必须一致。

2)	Mapper.xml 文件中的namespace与Mapper接口的类路径相同(即接口文件和映射文件需要放在同一个包中)。

3)	Mapper接口中的方法名和Mapper且nl 中定义的每个执行语句的id相同。

4)	Mapper接口中方法的输入参数类型要和Mapper.xml中定义的每个sql 的parameterType的类型相同。

5)	Mapper接口方法的输出参数类型要和Mapper.xml中定义的每个sql 的resultType的类型相同.

只要遵循了这些开发规范,MyBatis就可以自动生成Mapper接口实现类的代理对象,从而简化我们的开发.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值