DeptMpapper.xml:
这里要求namespace是对应接口的包路径+接口名。
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.exercise.dao.DeptMapper">
<!-- 定义1个列和实体类的映射关系 -->
<resultMap id="deptResultMap" type="com.neusoft.entity.Dept" >
<!-- 主键列的映射关系 -->
<id column="deptno" property="deptno"/>
<!-- 除了主键之外的列都用result -->
<result column="dname" property="dname"/>
<result column="loc" property="loc"/>
</resultMap>
<select id="getAllDept" resultMap="deptResultMap">
select * from dept
</select>
<insert id="saveDept" parameterType="dept">
insert into dept(deptno,dname,loc) values(#{deptno},#{dname},#{loc})
</insert>
<delete id="deleteDept" parameterType="int">
delete from dept where deptno=#{deptno}
</delete>
<!-- 更新 -->
<update id="updateDept" parameterType="com.neusoft.entity.Dept" >
update dept set dname=#{dname},loc=#{loc} where deptno=#{deptno}
</update>
</mapper>
DeptMapper.java:
注意,此接口所有的方法名都要和DeptMpapper.xml里面的方法名一一对应。
//mybatis接口和xml对应映射
public interface DeptMapper {
//添加部门
public void saveDept(Dept dept);
public void updateDept(Dept dept);
public void deleteDept(int deptno);
//查询所有部门的方法
public List<Dept> getAllDept();
}
DeptAutoMapperTest.java:
public class DeptAutoMapperTest {
SqlSessionFactory sqlSessionFactory =null;
@Before
public void init() throws IOException{
String resource = "mybatis-config.xml";
InputStream inputStream =
Resources.getResourceAsStream(resource);
sqlSessionFactory =
new SqlSessionFactoryBuilder().build(inputStream);
}
@Test
public void testGetAllDept(){
SqlSession sqlSession =sqlSessionFactory.openSession();
DeptMapper deptMapper =sqlSession.getMapper(DeptMapper.class);
List<Dept> list = deptMapper.getAllDept();
for (Dept dept : list)
System.out.println(dept);
}
}
使用了mybatis基于接口的映射方法,我们不用再像以前那样要在dao层中使用selectOne()、selectList()这些方法来使用sqlMap文件,我们可以直接调用接口方法即可。