Day5——MyBatis helloworld Mapper接口开发

曾经终败给现在 2023-07-04 11:16 84阅读 0赞

一. 回顾

前面Day3——MyBatis的helloworld(不使用Mapper接口实现MyBatis查询数据库)是不适用Mapper接口实现MyBatis,今天讲解使用Mapper接口开发实现MyBatis

前往免费下载源码

二. 知识储备

2.1 使用Mapper接口实现MyBatis的步骤

  1. 提供Mapper接口(其实就是以往自己创建的DAO接口,比如EmployDao.java,现在讲解MyBatis内容,使用Mapper称之,而不是叫DAO)
  2. 完成两个绑定

















绑定 说明
Mapper接口与映射文件的绑定 SQL映射文件的namespace指定成接口的全类名
Mapper接口的方法与SQL语句的绑定 SQL语句的id值指定成接口的方法名
  1. 获取MyBatis为Mapper接口生成的代理实现类的对象,如下:

    EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);

三. 例子

  • 创建工程,导入jar 包,如下:
    在这里插入图片描述
  • 创建测试表,如下:

    CREATE TABLE tbl_employee(
    id INT(11) PRIMARY KEY AUTO_INCREMENT,

    1. last_name VARCHAR(50),
    2. email VARCHAR(50),
    3. gender CHAR(1)

    );

    INSERT INTO tbl_employee VALUES (1001, ‘刚哥’, ‘gg@sina.com’, ‘1’);

    SELECT * FROM tbl_employee;

  • 创建JavaBean,如下:

Employee.java

  1. package com.atguigu.mybatis.beans;
  2. public class Employee {
  3. private Integer id;
  4. private String lastName;
  5. private String email;
  6. private String gender;
  7. public Integer getId() {
  8. return id;
  9. }
  10. public void setId(Integer id) {
  11. this.id = id;
  12. }
  13. public String getLastName() {
  14. return lastName;
  15. }
  16. public void setLastName(String lastName) {
  17. this.lastName = lastName;
  18. }
  19. public String getEmail() {
  20. return email;
  21. }
  22. public void setEmail(String email) {
  23. this.email = email;
  24. }
  25. public String getGender() {
  26. return gender;
  27. }
  28. public void setGender(String gender) {
  29. this.gender = gender;
  30. }
  31. @Override
  32. public String toString() {
  33. return "Employee [id=" + id + ", lastName=" + lastName + ", email=" + email + ", gender=" + gender + "]";
  34. }
  35. }
  • 创建全局配置文件,如下:
    mybatis-config.xml

    <?xml version=”1.0” encoding=”UTF-8” ?>
    <!DOCTYPE configuration PUBLIC “-//mybatis.org//DTD Config 3.0//EN” “http://mybatis.org/dtd/mybatis-3-config.dtd">








    //localhost:3306/bookstore_0416" />











  • 创建映射文件,如下:
    EmployeeMapper.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">

  1. <!-- SQL映射文件/apper映射文件 namespace: 命名空间 1. 随便写。不使用mapper接口开发,随便写 2. 不随便写。 使用mapper接口开发,不能随便写。必须写成接口的全类名 -->
  2. <mapper namespace="com.atguigu.mybatis.dao.EmployeeMapper">
  3. <!-- <select>: 定义查询的SQL语句 id: 唯一标识,namespace+id resultType: 结果集的封装类型 #{}: 获取参数值 -->
  4. <!-- public Employee selectEmployeeById(Integer id); -->
  5. <select id="selectEmployeeById" resultType="com.atguigu.mybatis.beans.Employee">
  6. select id, last_name lastName, email, gender from tbl_employee where id = #{id}
  7. </select>
  8. </mapper>
  • 创建Mapper接口,如下:
    EmployeeMapper.java

    package com.atguigu.mybatis.dao;

    import com.atguigu.mybatis.beans.Employee;

    public interface EmployeeMapper {

    1. public Employee selectEmployeeById(Integer id);

    }

  • 创建测试方法,如下:

    package com.atguigu.mybatis.test;

    import java.io.InputStream;

    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    import org.junit.Test;

    import com.atguigu.mybatis.beans.Employee;
    import com.atguigu.mybatis.dao.EmployeeMapper;

    public class TestMyBatis {

    1. @Test
    2. public void helloWorldMapper() throws Exception {
    3. String resource = "mybatis-config.xml";
    4. InputStream inputStream =
    5. Resources.getResourceAsStream(resource);
    6. SqlSessionFactory sqlSessionFactory =
    7. new SqlSessionFactoryBuilder().build(inputStream);
    8. SqlSession session = sqlSessionFactory.openSession();
    9. try {
    10. EmployeeMapper mapper = session.getMapper(EmployeeMapper.class);
    11. Employee employee = mapper.selectEmployeeById(1001);
    12. System.out.println(employee);
    13. } finally {
    14. // TODO: handle finally clause
    15. session.close();
    16. }
    17. }
  • 测试结果,如下:
    在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,84人围观)

还没有评论,来说两句吧...

相关阅读