
前言
映射器Mapper是 MyBatis 中最重要的文件,简单的讲主要用来映射SQL语句。
映射器有两种实现方式:注解方式、XML文件方式(推荐)。
接下来演示通过两种方式,开发Mybatis第一个入门程序,Let’s Go~
一、创建mysql user表
提前创建一张Mysql的user表,用于Mybatis读取。包括3个字段:id主键、name姓名、age年龄
CREATE TABLE `user` (
`id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`age` tinyint(1) UNSIGNED NOT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
insert into `user` VALUES (1,'天罡gg',18);
二、注解方式
只需要在接口中使用 Java 注解,注入 SQL 即可。
例如 根据id查询用户,Mybatis接口类命名通常命名为XxxMapper:
public interface UserMapper {
@Select("select * from user where id = #{id}")
User selectById(int id);
}
@Select注解用于编写查询sql,通过#{id}传递id参数。
User 定义如下:
public class User {
private Long id;
private String name;
private Integer age;
/*省略setter和getter方法*/
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
注解方式作为入门简单场景还不错,编写以后,你可以到第四段编写main方法调用试试效果~
如果 SQL 语句存在动态 SQL 或者比较复杂,使用注解写在 Java 文件里可读性差,且增加了维护的成本。所以一般建议使用XML文件配置的方式。
三、XML方式
同样的示例,换成XML方式,这时UserMapper接口去掉了注解,比较纯粹:
public interface UserMapper {
User selectById(int id);
}
然后在resources下创建 UserMapper.xml,因为上文在全局配置文件中配置的是mapper package路径,所以这里必须同包同名!如下图:

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.tiangang.dao.mapper.UserMapper">
<select id="selectById" resultType="com.tiangang.dao.po.User" >
select * from user where id = #{id}
</select>
</mapper>
- 根是mapper标签,并通过
namespace属性指定对应的 UserMapper 接口。 - select标签 映射的是SQL语句中的select查询语句
id属性指定 对应的是 UserMapper 接口的 selectById 方法resultType属性定义返回类型- 内容为对应SQL语句,通过
#{id}传递id参数

四、编写main方法调用
原生Mybaits一次查询的流程如下:
public class MybatisApplication {
public static void main(String[] args) throws IOException {
// 1. 得到SqlSessionFactory
String resource = "mybatis-config.xml";
Reader reader = Resources.getResourceAsReader(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
// 2. 得到SqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
// 3. 得到具体Mapper
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
// 4. 执行业务代码:各种的增删改查
User user = mapper.selectById(1);
System.out.println(user);
} catch (Exception e) {
e.printStackTrace();
} finally {
sqlSession.close();
}
}
}
运行结果如下:

当然,实际上我们不会每一次都编写这么长的调用代码,下文会详细说明,并封装Mybatis工具类!
如果有收获,大家帮忙多点点赞,加加关注,多多支持,让我更有动力更新更多干货!
天罡gg:https://blog.youkuaiyun.com/scm_2008 后面还有更多干货等着你,加油!

本文介绍了Mybatis映射器Mapper的两种实现方式——注解和XML,通过创建mysql user表,展示如何使用注解方式和XML方式编写查询SQL。并提供了编写main方法调用示例,解释了Mybatis一次查询的流程。
1172

被折叠的 条评论
为什么被折叠?



