<mapper>是<mappers>子标签

我们平常在做数据库操作的时候先要获取到sqlSession对象

String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        System.out.println(sqlSessionFactory);
        SqlSession sqlSession=sqlSessionFactory.openSession();

sqlSession操作数据有几种方法

①sqlSession.selectOne("String",Object)(这里就举一个select的例子)

User user=sqlSession.selectOne("dao.UserMapper.selectUserById", 2);

这里的dao.UserMapper.selectUserById就是mapper.xml中的 namespace+id(唯一标志符)

这个时候就与dao层没有多大关系,因为直接调用xml文件。

 

②sqlSession.getMapper()方法

UserMapper userMapper=sqlSession.getMapper(dao.UserMapper.class);  //创建出userMapper的代理对象

这里创建出UserMapper的代理对象,但是并不知道操作数据库的语言。

所以就要进行动态绑定

方法一:

就是将xml文件里<mapper namespace=" UserMapper的全类名"> 

<mapper namespace="dao.UserMapper">
    <select id="selectUserById" resultType="bean.User">  //这里的id是和Usermapper的方法名一样
        select * from user where id=#{id}
    </select>
</mapper>

 

 

 

 

③注解的方式

在Dao层里的UserMapper接口上面用注解方式开发,但是<mapper 必须使用class=“xxx”>

public interface UserMapperAnnotion {
    @Select("select * from user where id=#{id}")
    public User getUserById(int id);
}

 

<mapper 一共有三种引用的方式>

①:<mapper source=" ">  :这种引用方式是引用类路径下的引用xml文件

②:<mapper url=" "> :这种方式是使用绝对路径或者是磁盘路径,引用xml文件

③:<mapper class=" "> :这种方式是用来引用“接口”的文件,使用的时候切记将mapper.xml文件和mapper文件放在同一个包下面(猜测是会通过某种方式寻找到同名的xml文件,从而读取sql语句)