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
从而得到结果。