- MyBatis框架提供一个用用来降低开发人员进行Dao层开发负担技术,开发人员只需要书写SQL映射文以及用于推送sql语句的Dao接口即可
-
- 此时由MyBatis框架负责在内存中创建Dao接口的实现类并生成其实例对象
- MyBatis框架作者提供Dao代理服务是面对的问题:
-
- 如何确认Dao接口与SQL映射文件之间的对应关系
- 如何确认SQL语句与接口中方法的对应关系
-
- SQL映射文件的名称必须与对应的Dao接口名完全相同
- SQL映射文件位置必须与对应的Dao接口来自于同一个包下
- SQL映射文件中SQL语句的id编号必须与对应的Dao接口中的方法名完全相同
- SQL映射文件中namespace的值必须是对应的Dao接口的权限定名称
-
- Dao接口 dao代理对象 = sqlSession.getMapper(Dao接口.class)
- 其他因素
-
-
- Maven对于配置文件的加载(pom.xml修改)
-
-
-
- 解决方案1:修改<build><resources></resources></build>
<build><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes><filtering>false</filtering></resource><resource><directory>src/main/resources</directory><includes><include>**/*.xml</include><include>**/*.properties</include></includes><filtering>false</filtering></resource></resources>
</build>
-
-
-
- 解决方案2:在resources文件夹中建立与main中的同名目录,将Mapper.xml文件放进去
-
-
- sql映射文件位置的变化(mybatis-config.xml修改)
<mappers><package name="com.wry.dao"/>
</mappers>
-
- 调用salSession.getMapper(Mapper接口.class)获取接口实现类对象
- 调用接口中的方法
XxxxMapper xxxxMapperImpl = sqlSession.getMapper(XxxxMapper.class);
public void testSelectAllDeot(){SqlSession sqlSession = MyUtil.getSqlSession(true);DeptMapper deptMapperImpl = sqlSession.getMapper(DeptMapper.class);List<Dept> depts = deptMapperImpl.selectAllDept();System.out.println(depts);
}public void testInsertDrpt(){SqlSession sqlSession = MyUtil.getSqlSession(false);DeptMapper deptMapperImpl = sqlSession.getMapper(DeptMapper.class);int count = deptMapperImpl.insertDept(new Dept(90, "部门", "办公地"));if (count ==1) {sqlSession.commit();System.out.println("数据添加成功");} else {sqlSession.rollback();System.out.println("数据添加失败");}
}