Mybatis框架基础入门(三)--Mapper动态代理方式开发

使用MyBatis开发Dao,通常有两个方法,即原始Dao开发方法和Mapper动态代理开发方法。

原始Dao开发方法需要程序员编写Dao接口和Dao实现类,此方式开发Dao,存在以下问题:

  1. Dao方法体存在重复代码:通过SqlSessionFactory创建SqlSession,调用SqlSession的数据库操作方法
  2. 调用sqlSession的数据库操作方法需要指定statementid,这里存在硬编码,不便于开发维护。

所以建议使用mapper动态代理方式来开发dao。

 

Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象。

 

Mapper接口开发需要遵循以下规范:

  1. Mapper.xml文件中的namespace与mapper接口的类路径相同。
  2. Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
  3. Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql 的parameterType的类型相同
  4. Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同

具体demo请查看如下:

 

 

就根据 caseCountByQueryCaseVo这个接口来看,然后一一对照上面的四个规则要求,就会发现能够一一对上,假如你发现对不上,那你就牛鼻了,记得找我,让我也牛鼻一下,哈哈。

 

上面写完后,接下来就写一个测试方法去测试看看能不能成功运行啦。(至于pojo对象我这里就不写了,你自己根据上面规则写就好了)

    public class TestMybatis {
	private SqlSessionFactory sqlSessionFactory;

	@Before
	public void init() throws Exception {
		// 创建SqlSessionFactoryBuilder
		SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
		// 加载SqlMapConfig.xml配置文件
		InputStream inputStream = Resources.getResourceAsStream("SqlMapConfig.xml");
		// 创建SqlsessionFactory
		this.sqlSessionFactory = sqlSessionFactoryBuilder.build(inputStream);
	}
    
    @Test
	public void testMybatisMapper() {
		// 获取sqlSession
		SqlSession sqlSession = this.sqlSessionFactory.openSession();

		// 从sqlSession中获取Mapper接口的代理对象
		TestCase testCase = sqlSession.getMapper(TestCase.class);
		// 执行查询方法
		int count = testCase.caseCountByQueryCaseVo(queryCaseVo);//queryCaseVo为入参查询条件
		System.out.println(count);
		sqlSession.close();
	}

 

 

特别注意:

1.记得sql的函数(比如此处的count(1))不能作为查询结果返回,必须要加个别名存储结果,否则执行会报错的。

2.测试前记得配置好相关配置文件哦,如下,记得把TestCase.java和TestCasexml文件放在一个目录下,如上图所示

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<!-- 设置别名 -->
	<typeAliases>
		<!-- 2. 指定扫描包,会把包内所有的类都设置别名,别名的名称就是类名,大小写不敏感 -->
		<package name="com.pojo" />
	</typeAliases>

</configuration>

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值