MyBatis 读取数据

本章将介绍 MyBatis 的读取数据操作。

1. 修改 UserMapper.xml 映射文件

UserMapper.xml 映射文件中将包含所有 User 相关 SQL 映射语句。

在映射文件中添加 Select 语句,Select语句会返回结果,需要把结果映射到 Java 对象,所以添加了 resultMap。Select 语句与 resultMap 都用唯一ID标志,以便在Java代码中可以调用。

我们添加了 2 个 select 方法:

  • getAll – 获取用户列表
  • getById – 获取用户详情
<?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 = "User">

    <resultMap id="result" type="User">
        <result property="id" column="id" />
        <result property="name" column="name" />
    </resultMap>

    <select id="getAll" resultMap="result">
        SELECT * FROM User;
    </select>

    <select id="getById" parameterType="long" resultMap="result">
        SELECT * FROM User WHERE ID = #{id};
    </select>

</mapper>

参数类型可以是任何类型,如 int、float、double 或任何类,本例中参数类型User,即在调用 SqlSession 类的方法时,将传入 User 类的对象。

2. 修改应用程序 main 类

应用程序 main 类位于文件 App.java:

package com.aizws.demo;

import java.io.IOException;
import java.io.Reader;

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

public class App { 

   public static void main(String args[]) throws IOException{

      Reader reader = Resources.getResourceAsReader("MybatisConfig.xml");
      SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);       
      SqlSession session = sqlSessionFactory.openSession();

      System.out.println("------------ 读取用户列表 -----------");
      //select contact all contacts       
      List<User> userList = session.selectList("User.getAll");

      for(User u : userList ){         
         System.out.println(u.getId());
         System.out.println(u.getName()); 
      }  
      System.out.println("读取用户列表成功");    

      System.out.println("------------ 读取用户详情 -----------");
      //select a particular student  by  id   
      User user1 = (User) session.selectOne("User.getById", 2L); 

      //Print the student details
      System.out.println(user1.getId());
      System.out.println(user1.getName());

      System.out.println("读取用户详情成功");  

      session.commit();
      session.close();   
   }

}

3. 运行

运行程序,输出结果:

------------ 读取用户列表 -----------
1
user1
2
user2
3
user3
4
user4
5
user5
6
newUser100
8
newUser100
读取用户列表成功
------------ 读取用户详情 -----------
2
user2
读取用户详情成功

下一章:MyBatis 修改数据

本章将介绍 MyBatis 的数据修改操作。1. 修改 UserMapper.xml 映射文件:UserMapper.xml 映射文件中将包含所有 User 相关 SQL 映射语句。首先读取一个用户信息,然后修改信息并保存,然后查询修改后的用户信息,确认是否修改成功。