总结原始dao开发问题
- dao接口实现类方法中存在大量模板方法,设想能否将这些代码提取出来,大大减轻程序员的工作量。
- 调用sqlsession方法时将Statement的id硬编码了。
- 调用sqlsession方法时传入的变量,由于sqlsession方法使用泛型,即使变量类型传入错误,在编译阶段也不报错,不利于程序员开发。
mapper代理开发方法
- 程序员需要编写mapper.xml映射文件
程序员编写mapper接口需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类代理对象
开发规范
1.在mapper.xml中的namespace等于mapper接口的地址。
<!-- namespace命令空间,作用就是对sql进行分类化管理,理解sql隔离
注意:使用mapper代理方法开发,namespace有特殊重要的作用 namespace等于mapper接口的地址
-->
<mapper namespace="cn.iven.mybatis.mapper.UserMapper">
2.mapper.java接口中的方法名和mapper.xml中statement的id一致。
3.mapper.java接口中的方法输入参数类型和mapper.xml中的statement的parameterType指定的类型一致。
4.mapper.java接口中的方法返回参数类型和mapper.xml中的statement的resultType指定的类型一致。
mapper.xml
<select id="findUserById" parameterType="int" resultType="cn.iven.mybatis.po.User">
SELECT * FROM user WHERE id=#{id}
</select>
mapper接口
//根据id查询用户信息
public User findUserById(int id) throws Exception;
总结
以上开发规范主要是对下边的代码进行统一生成:
User user = sqlSession.selectOne("test.findUserById", id);
sqlSession.insert("test.insertUser", user);
sqlSession.delete("test.deleteUser", id);