【MyBatis-05】mybatis开发mapper的方式

来源:互联网 发布:mac c语言 软件 编辑:程序博客网 时间:2024/05/19 20:46

上一节讲了基于dao的开发方式,相对比较麻烦。

这一节我们讲基于mapper的开发方式。

也就是开发mapper接口的方式。

这样我们首先明白第一点,有mapper接口文件。


基于mapper的开发方式有一些约定,遵守约定可以让开发变得简单,我们崇尚约定大于配置的思想。

约定如下:


1、mapper接口的全限定名要和mapper映射文件的namespace值一致。
2、mapper接口的方法名称要和mapper映射文件的statement的id一致。
3、mapper接口的方法参数类型要和mapper映射文件的statement的parameterType的值一致,而且它的参数是一个。
4、mapper接口的方法返回值类型要和mapper映射文件的statement的resultType的值一致。


让我们来一个demo吧,和上一节重复的部分我就不专门讲了。

1、创建项目、创建代码包及lib文件夹、导入jar包,创建pojo类,结果如下:



2.创建mapper接口文件

package com.cm.mybatis.mapper;import java.util.List;import com.cm.mybatis.pojo.ClassInfo;public interface ClassInfoMapper {ClassInfo findClassInfoById(int classid);List<ClassInfo> findClassInfosByName(String classname);void insertClassInfo(ClassInfo info);}

3.在config下创建mapper目录然后创建ClassInfoMapper.xml(这是mybatis的命名规范,当然,也不是必须是这个名称)



4.将mapper文件注入到全局配置文件中


5.编写测试类

package com.cm.mybaits.test;import java.io.IOException;import java.io.InputStream;import java.util.Date;import java.util.List;import java.util.Random;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import org.junit.Before;import org.junit.Test;import com.cm.mybatis.mapper.ClassInfoMapper;import com.cm.mybatis.pojo.ClassInfo;public class ClassInfoTest {private SqlSessionFactory sqlSessionFactory;ClassInfoMapper mapper;@Beforepublic void beforeLoad() throws IOException {// 全局配置文件的文件名String resource = "SqlMapConfig.xml";// 将全局配置文件加载到Stream中InputStream is = Resources.getResourceAsStream(resource);// 根据全局配置文件创建SqlSessionFactorysqlSessionFactory = new SqlSessionFactoryBuilder().build(is);SqlSession sqlSession=sqlSessionFactory.openSession();mapper=sqlSession.getMapper(ClassInfoMapper.class);}@Testpublic void findClassInfoById() {ClassInfo info=mapper.findClassInfoById(1);System.out.println(info);}@Testpublic void findClassInfosByName() {List<ClassInfo> infos = mapper.findClassInfosByName("2002");for (ClassInfo info : infos) {System.out.println(info);}}@Testpublic void insertClassInfo() {ClassInfo info = createClassInfo();mapper.insertClassInfo(info);System.out.println(info);}private ClassInfo createClassInfo() {ClassInfo info = new ClassInfo();info.setClasslocation("咱家的事情" + new Random().nextInt());info.setClassname("新班级名称" + new Date());info.setMemo("Memo:" + new Random().nextInt());return info;}}

6.我们看看自己写的方法,是不是都非常简单



7.我们执行下看看结果。


8.是不是比dao方法简单多了,只要遵照约定,简单开发mapper接口类和mapper.xml文件即可。


原创粉丝点击