MyBatis 的简单 CRUD 操作

CRUD

所谓CRUD即数据库的增删改查操作

第一章已经说了MyBatis的特点和优势,其中提到了MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO为数据库中的记录。这里其实可以发现,使用MyBatis框架只需要修改接口中的方法以及对应的XML 配置文件,或者使用注解(之后会讲到注解的各种用法)就可以对数据库进行不同的操作。

select 操作

例如简单的查询所有学生信息

  • 先在接口中编写要实现的方法(上篇已提到)

    public interface StudentMapper {
      List<Student> getStudents();
    }
  • 接着在对应的XML文件中编写对应执行SQL

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
          PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
          "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="com.hudu.dao.StudentMapper">
      <select id="getStudents" resultType="Student">
          select * from student
      </select>
    </mapper>
  • 然后需要在mybatis-config.xml文件中添加绑定

    <!--通过resource方法定位StudentMapper.xml文件-->
          <mapper resource="com/hudu/dao/StudentMapper.xml"/>
    
          <!--通过类定位-->
          <!-- <mapper class="com.hudu.dao.StudentMapper"/>-->
    
          <!--通过包扫描-->
          <!-- <package name="com.hudu.dao"/>-->

    三种方法都行,但是第二种使用 class 的文件绑定接口和 mapper 配置文件和第三种必须两文件同名和在同一包结构下。

  • 测试

    @Test
      public void test1() {
          SqlSession sqlSession = MybatisUtil.getSqlSession();
          StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
          List<Student> students = mapper.getStudents();
          for (Student student : students) {
              System.out.println(student);
          }
          sqlSession.close();
      }
  • 结果

    sgEmJjNgkd.png!large

delete 操作

之后的演示只会展示核心配置文件和代码

  • 接口中定义方法

    //给id属性起一个别名
    void deleteStudent(@Param("sid") int id);
  • 编写对应 XML 配置文件

    <delete id="deleteStudent" parameterType="_int">
          delete from student where id = #{sid}
    </delete>
  • 测试

    @Test
      public void test2() {
          SqlSession sqlSession = MybatisUtil.getSqlSession();
          StudentMapper mapper = sqlSession.getMapper(StudentMapper.class);
          mapper.deleteStudent(5);
          sqlSession.close();
      }

insert 操作

void addStudent(Student student);
<insert id="addStudent" parameterType="Student">
        insert into student(id,name,tid) values (#{id},#{name},#{tid})
</insert>

这里参数类型能直接写Student是因为 mybatis-config.xml 中定义了 typeAlias

<!--可以给实体类起别名-->
    <typeAliases>
        <typeAlias type="com.hudu.pojo.Student" alias="Student"/>
        <!--扫描实体类的包,它的默认别名就为这个类的类名,实体类比较多用package扫描-->
        <!--<package name="com.com.test.pojo"/>-->
    </typeAliases>

update 操作

void updateStudent(Student student);
<update id="updateStudent" parameterType="Student">
        update student set name = #{name},tid = #{tid} where id = #{id}
</update>

总结

  • XML文件 namespace 要与接口绑定
  • 接口中的具体实现在 XML 中实现
  • 基本数据类型参数用_int等表示,具体看官方文档
  • 对象类型的参数为了便于使用最好在 mybatis-config 中配置 typeAliases,给实体类起别名。
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!