思路:只需要写mapper接口(相当于dao接口)和mapper.xml映射文件
开发规范:
- 在mapper.xml中namespace等于mapper接口地址
- mappper.java接口方法中的方法名和mapper.xml中statement的id一致
- mapper.java接口中的方法输入参数类型和mapper.xml中的statement的parameterType指定的类型一致
mapper.java接口中的方法返回值类型和mapper.xml和statem的resultType指定的类型一致
总结:以上开发规范主要是对下边的代码进行统一生成:
原始dao方法
User user=sqlSession.selectOne("test.findUserById",id);
sqlSession.insert("test.insertUser",user);
使用这种原始方法:映射文件的namespace可随意,在mybatis配置文件中使用
<mappers>
<mapper resource="mysql/usermapper.xml"/>
</mappers>
mapper代理方法
public static void main(String []args) throws Exception{
String resource="mybatis-config.xml";
InputStream inputStream=Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory= new SqlSessionFactoryBuilder().build(inputStream);
SqlSession session=sqlSessionFactory.openSession();
Studentdao studentdao=session.getMapper(Studentdao.class);
Student student= studentdao.findStudent(1);
Student student2 =new Student();
student2.setSex("男");
student2.setSname("dsihdsi");
studentdao.insertToStudent(student2);
session.commit();
System.out.println(student2.getSid());
System.out.println(student.toString());
}
使用这种mapper接口方法:需要将映射文件的namespace设置为dao接口的文件名(包含包名),mybatis配置文件中添加映射文件:
<mappers>
<mapper resource="mysql/usermapper.xml"/>
</mappers>
注:SqlSession 线程不安全,所以使用局部变量;SqlSessionFactory 使用单例模式进行传入。
通过mapper接口加载单个映射文件
遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中
上边规范的前提是:使用的是mapper代理方法
<mappers>
<mapper class="" />
</mappers>
批量加载mapper
遵循加载单个映射文件的规范
<mappers>
<package name=""/>
</mappers>