【Mybatis小白从0到90%精讲】03:编写Mapper,第一个入门程序

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

优快云成就一亿技术人


前言

映射器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 后面还有更多干货等着你,加油!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

天罡gg

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值