思路:只需要寫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>