<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语句)