mapper

mapper是java方法和sql语句之间的桥梁

注解方式

public interface UserMapper {
  @Select("SELECT username FROM imooc_user WHERE id = #{id}")
  String selectUsernameById(Integer id);
}

XML方式

提示namespace 命名空间是每一个 mapper 文件所独有的,它唯一标识着一个 mapper

注意: 在这里,.xml 配置文件必须与其对应的接口在同一个包内。

二者在目录中的位置如下:

src/main/java/com/imooc/mybatis/mapper ├── UserMapper.java └── UserMapper.xml

<?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.imooc.mybatis.mapper.UserMapper">
  <select id="selectUserAgeById" resultType="java.lang.Integer">
    SELECT age FROM imooc_user WHERE id = #{id}
  </select>
</mapper>

我们可以为 UserMapper 类打上一个 Mapper注解,虽然这个注解并不是必须的,但是增强了代码的可读性。如下:

@Mapper
public interface UserMapper {
  // 省略其它诸多代码
}

mapper配置

首先,我们需要在 mybatis-config.xml 配置文件中添加上对应的 mapper 配置:

<!--  mapper 对应的配置  -->
  <mappers>
    <mapper class="com.imooc.mybatis.mapper.UserMapper"/>
  </mappers>

代码调用

		String resource = "mybatis-config.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    SqlSession session = sqlSessionFactory.openSession();
    // 得到 mapper
    UserMapper mapper = session.getMapper(UserMapper.class);
    // 调用注解的SQL
    String username = mapper.selectUsernameById(1);
    System.out.println("username: " + username);
    // 调用XML的SQL
    Integer age = mapper.selectUserAgeById(1);
    System.out.println("age: " + age);
    // 关闭会话
    session.close();

我们不再通过 session 得到连接从而执行 SQL 了,而是在 session 中得到配置好的 UserMapper,再通过调用UserMapper 的方法执行 SQL 从而得到结果。

posted @ 2020-08-01 00:03  柒丶月  阅读(512)  评论(0编辑  收藏  举报