MyBatis实现Mapper配置并查询数据

本文介绍了MyBatis中Mapper的作用,详细展示了如何通过XML配置Mapper接口,包括添加Mapper配置、编写Mapper接口、创建XML配置文件以及进行测试。通过示例解释了XML方式设置SQL查询,包括resultType和resultMap的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是Mapper

在MyBatis工程搭建 中我们主要是 MyBatis 如何连接数据库,具体执行 SQL 语句使用的是 JDBC 方式;
但是在实际应用中是我们一般不会选择 JDBC 来执行 SQL 的,MyBatis 提供了 Mapper 作为 Java 方法和 SQL 语句之间的桥梁,关系如图所示:
在这里插入图片描述

代码实现

导入MySQL驱动包、MyBatis框架基础包并且添加MyBatis核心配置文件

在mybatis-config.xml配置文件中添加上对应的mapper配置
在这里插入图片描述
User模块Mapper层:UserMapper.java

package mapper;

public interface UserMapper {
    /**
     * 通过用户id查询用户名称
     *
     * @param id 用户id
     * @return 用户名称
     */
      @Select("SELECT username FROM user WHERE id = #{id}")
    String selectUsernameById(Integer id);
}

User模块测试类:UserTest.java

@SuppressWarnings({"Duplicates"})
public class UserTest {
    public static void main(String[] args) throws IOException, SQLException {
        // 读取配置文件
        InputStream configuration = Resources.getResourceAsStream("mybatis-config.xml");
        // 得到 SqlSessionFactory 核心类
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);
        // 开始一个 sql 会话
        SqlSession session = sqlSessionFactory.openSession();
        // 得到 mapper
        UserMapper mapper = session.getMapper(UserMapper.class);
        // 调用注解的SQL
        String username = mapper.selectUsernameById(1);
        System.out.println("username: " + username);
        // 关闭会话
        session.close();
    }
}
测试结果

在这里插入图片描述

XML方式使用Mapper

XML方式是更加强大的一种使用方式,虽然它没有注解那么方便,但是功能更强、更易维护。

代码实现

在 UserMapper 接口中,我们再新增一个方法selectUserAgeById,

/**
     * 通过用户id查询用户年龄
     *
     * @param id 用户id
     * @return 用户年龄
     */
    Integer selectUserAgeById(Integer id);

User模块Mapper层配置文件: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="mapper.UserMapper">
<select id="selectUserAgeById" resultType="java.lang.Integer">
    SELECT age FROM user WHERE id = #{id}
</select>
</mapper>

namespace命名空间是每一个mapper的唯一标识,也是XML文件和Java接口类连接的标识。
其中id:对应接口的方法名,即 selectUserAgeById,通过它 MyBatis 才能将二者对应起来;
resultType:对应 SQL 语句的返回类型,与接口方法的返回值相同,有时会用到resultMap

User模块测试类:UserTest.java
在这里插入图片描述

测试结果

在这里插入图片描述

代码实现

在UserMapper.xml文件中,我们新增 selectUserById 标签,

<select id="selectUserById" resultType="entity.User">
    SELECT * FROM user WHERE id = #{id}
</select>

在entity包下创建User实体类:User.java
在这里插入图片描述
在这里插入图片描述
User模块Mapper层:UserMapper.java
在这里插入图片描述

测试结果

在这里插入图片描述
代码实现
User模块Mapper层配置文件:UserMapper.xml
在这里插入图片描述
其中标签是主键,其它字段均使用 result 标签来映射;
标签有property和column两个属性,其中 property 是 Java 对象中的属性名称,column 是数据表与之对应的字段名称。

测试结果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值