Mybatis基于接口的映射

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文件,我们可以直接调用接口方法即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容