mapper代理方法(程序员只需要mapper接口,相当于DAO接口)
1 思路
程序员还需要编写mapper.xml映射文件,在src文件夹下新建mapper包,用于存放mapper接口
程序员编写mapper接口需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类代理对象。
开发规范:
a、在mapper.xml中namespace等于mapper接口地址
在config文件夹下新建个mapper文件夹,存放对应的映射文件
b、mapper.java接口中的方法名和mapper.xml中statement的id一致
c、mapper.java接口中的方法输入参数类型和mapper.xml中statement的parameterType指定的类型一致。
d、mapper.java接口中的方法返回值类型和mapper.xml中statement的resultType指定的类型一致。
User user = sqlSession.selectOne("test.findUserById", id);
sqlSession.insert("test.insertUser", user);
2 实现
新建userMapperTest.java测试文件
package pers.czs.mybatis.first; import java.io.InputStream; 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.Test; import pers.czs.mybatis.mapper.UserMapper; public class userMapperTest { @Test public void testFindUserByid() throws Exception { //Mybatis配置文件 String resource = "sqlMapConfig.xml"; //得到配置文件流 InputStream inputStream = Resources.getResourceAsstream(resource); //创建会话工厂,传入配置文件信息 sqlSessionFactory sqlSessionFactory = new sqlSessionFactoryBuilder().build(inputStream); sqlSession sqlSession = sqlSessionFactory.openSession(); //创建UserMapper对象,myvatis自动生成mapper代理对象 UserMapper userMapper = sqlSession.getMapper(UserMapper.class); //调用userMapper的方法 System.out.println(userMapper.findUserById(29)); } }
运行结果:
3 注意
如果mapper方法返回单个pojo对象(非集合对象),代理对象内部通过selectOne查询数据库。
如果mapper方法返回集合对象,代理对象内部通过selectList查询数据库。
mapper接口方法参数只能有一个是否影响系统开发
mapper接口方法参数只能有一个,系统是否不利于扩展维护。
系统框架中,dao层的代码是被业务层公用的。