Mybatis mapper代理开发方式 2021-9-20

Mybatis 应用

1 Mybatis 入门与编码流程
2 mapper代理开发方式
3 全局配置文件
4 输入映射和输出映射
5 关联查询
6 延迟加载
7 动态SQL
8 Mybatis缓存


一、 代理理解

Mybatis 使用了两种动态代理方式。
基于JDK的动态代理–针对有接口的类进行动态代理
基于CGLIB的动态代理–通过子类继承父类的方式去进行代理。

二、 XML实现方式

2.1开发方式

只需要开发Mapper接口(dao接口)和Mapper映射文件,不需要编写实现类。Mapper接口 本质是dao 接口,换了一种特殊的名字。

2.2 开发规范

类名 + 方法三要素 对应Mapper关系。
Mapper接口开发方式需要遵循以下规范:
1、 Mapper接口的类路径与Mapper.xml文件中的namespace相同。
2、 Mapper接口方法名称和Mapper.xml中定义的每个statement的id相同。
3、 Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相
同。
4、 Mapper接口方法的返回值类型和mapper.xml中定义的每个sql的resultType的类型相同。

2.3 代码实现

  1. Mapper 文件
<mapper namespace="com.kkb.mybatis.phase02.mapper.UserMapper">
	<select id="findUserById" parameterType="int"
		resultType="com.kkb.mybatis.phase01.po.User">
		SELECT * FROM user WHERE id = #{id}
	</select>
</mapper>
  1. 编写dao代码 查询接口,UserMapper
package com.kkb.mybatis.phase02.mapper;

import com.kkb.mybatis.phase01.po.User;

public interface UserMapper {
	User findUserById(int id);
}

3 测试类

public class Test2 {
	private SqlSessionFactory sqlSessionFactory;

	@Before
	public void init() throws Exception {
		// 加载全局配置文件(同时把映射文件也加载了)
		String resource = "phase02/SqlMapConfig.xml";
		InputStream inputStream = Resources.getResourceAsStream(resource);
		// sqlsessionFactory需要通过sqlsessionFactoryBuilder读取全局配置文件信息之后
		sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
	}

	@Test
	public void testFindUserById() {
		//创建UserMapper对象
		SqlSession sqlSession = sqlSessionFactory.openSession();
		UserMapper mapper = sqlSession.getMapper(UserMapper.class);
		//调用UserMapper对象的API
		User user = mapper.findUserById(1);
		System.out.println(user);
	}
}

三、 注解方式

只需要编写mapper接口文件接口。
持久层不推荐写在代码里面,SQL最初写在配置文件, 语句有可能经常变动,所以放在配置文件中。
代码的设计原则对扩展开放,对修改关闭。?

import org.apache.ibatis.annotations.Select;

public interface UserMapper {
	@Select("SELECT * FROM user WHERE id = #{id}")
	User findUserById(int id);
}

将 UserMapper 类所在文件放在Mappers 位置文件下

	<mappers>
		<package name="com.kkb.mybatis.phase02_1.mapper" />
	</mappers>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值