本章将详细介绍MyBatis的数据读取操作。
准备数据
我们已经在前面章节中创建了数据库,如没有数据,可参考前面章节MYBATIS教程 – 环境搭建创建。
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类的对象。
App.java
应用程序main类文件。
App.java
package com.qikegu.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();
}
}
运行
运行输出:
------------ 读取用户列表 -----------
1
user1
2
user2
3
user3
4
user4
5
user5
6
newUser100
8
newUser100
读取用户列表成功
------------ 读取用户详情 -----------
2
user2
读取用户详情成功