mybatis的代理开发:(代理也相当于是通过调用方法来实现逻辑业务的)
Mapper接口开发方法只需要程序员编写Mapper接口(相当于Dao接口),由Mybatis框架根据接口定义创建接口的动态代理对象,代理对象的方法体同上边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的类型相同
下面是代码演示:
第一步:Mapper.xml文件中的namespace与mapper接口的全限定名相同
第二步:Mapper接口方法名和Mapper.xml中定义的每个statement的id相同
第三步:Mapper接口方法的输入参数类型和mapper.xml中定义的每个sql的parameterType的类型相同(我们这里没有参数,两边都没有参数就相当于是相同的)
第四步:Mapper接口方法的输出参数类型和mapper.xml中定义的每个sql的resultType的类型相同
测试代码:
public class ServiceDemo { public static void main(String[] args) throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml"); SqlSessionFactory sqlSessionFactory=new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = sqlSessionFactory.openSession(); //通过mybatis来帮我们创建实现类 UserMapper userMapper=sqlSession.getMapper(UserMapper.class); List<User> all=userMapper.findAll(); System.out.println(all); } }
效果:
我们相比较传统的方法是没有写这个接口的实现类的,这个代理是直接通过接口去调用映射文件里的代码。
上面我写的是一个没有参数的,现在我们写一个有参数的。
接口的方法:
映射文件:
测试代码:
效果: