滚雪球学MyBatis(04):数据模型与Mapper接口
前言
欢迎回到我们的MyBatis系列教程。在上一期中,我们详细介绍了MyBatis的基本配置,包括MyBatis配置文件和Mapper映射文件的创建与配置。现在,我们已经具备了基本的配置知识,是时候进一步了解MyBatis的核心内容——数据模型和Mapper接口。在本期内容中,我们将创建数据模型(实体类)并定义Mapper接口,以便实现与数据库的交互。
3.3 数据模型(实体类)
在MyBatis中,数据模型通常指与数据库表对应的Java类(即实体类)。这些实体类用于表示数据库中的数据,并在Mapper接口中作为参数或返回值。
创建数据模型(实体类)
假设我们有一个名为users
的数据库表,其结构如下:
CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(50),age INT
);
根据该表结构,我们可以创建一个User
类来表示数据库中的用户数据。
package com.example.model;public class User {private int id;private String name;private int age;// Getters and Setterspublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}
在这个类中,我们定义了与数据库表字段对应的属性以及它们的getter和setter方法。
3.4 创建Mapper接口
Mapper接口用于定义与数据库交互的方法。每个方法对应一个SQL操作,例如查询、插入、更新和删除。
定义Mapper接口
根据前面创建的User
类,我们可以定义一个UserMapper
接口,该接口包含了对users
表的基本CRUD操作。
package com.example.mapper;import com.example.model.User;
import java.util.List;public interface UserMapper {// 查询所有用户List<User> getAllUsers();// 插入新用户void insertUser(User user);// 更新用户信息void updateUser(User user);// 删除用户void deleteUser(int id);
}
对应的Mapper映射文件
在Mapper接口定义好后,我们需要在Mapper映射文件中编写对应的SQL语句。创建UserMapper.xml
文件:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.example.mapper.UserMapper"><!-- 查询所有用户 --><select id="getAllUsers" resultType="com.example.model.User">SELECT * FROM users</select><!-- 插入新用户 --><insert id="insertUser" parameterType="com.example.model.User">INSERT INTO users (name, age) VALUES (#{name}, #{age})</insert><!-- 更新用户信息 --><update id="updateUser" parameterType="com.example.model.User">UPDATE users SET name = #{name}, age = #{age} WHERE id = #{id}</update><!-- 删除用户 --><delete id="deleteUser" parameterType="int">DELETE FROM users WHERE id = #{id}</delete></mapper>
3.5 使用MyBatis执行数据库操作
为了使用MyBatis执行数据库操作,我们需要在项目中配置MyBatis的SqlSessionFactory
并使用它来获取Mapper实例。
配置SqlSessionFactory
在项目中创建一个MyBatisUtil
类,用于获取SqlSessionFactory
:
package com.example.util;import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.Reader;public class MyBatisUtil {private static SqlSessionFactory sqlSessionFactory;static {try {Reader reader = Resources.getResourceAsReader("mybatis-config.xml");sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);} catch (IOException e) {e.printStackTrace();throw new RuntimeException(e);}}public static SqlSessionFactory getSqlSessionFactory() {return sqlSessionFactory;}
}
使用Mapper进行操作
在应用程序中使用SqlSessionFactory
获取UserMapper
实例,并进行CRUD操作:
package com.example;import com.example.mapper.UserMapper;
import com.example.model.User;
import com.example.util.MyBatisUtil;
import org.apache.ibatis.session.SqlSession;import java.util.List;public class MyBatisDemo {public static void main(String[] args) {SqlSession sqlSession = MyBatisUtil.getSqlSessionFactory().openSession();UserMapper userMapper = sqlSession.getMapper(UserMapper.class);// 插入用户User newUser = new User();newUser.setName("John Doe");newUser.setAge(30);userMapper.insertUser(newUser);sqlSession.commit();// 查询所有用户List<User> users = userMapper.getAllUsers();for (User user : users) {System.out.println(user.getName() + " - " + user.getAge());}// 更新用户信息newUser.setAge(31);userMapper.updateUser(newUser);sqlSession.commit();// 删除用户userMapper.deleteUser(newUser.getId());sqlSession.commit();sqlSession.close();}
}
总结
通过本期内容,我们了解了如何创建数据模型(实体类)并定义Mapper接口,这些步骤是实现数据库操作的基础。在下一期中,我们将深入探讨MyBatis的基本CRUD操作,包括插入、查询、更新和删除操作。通过这些操作,大家将学会如何使用MyBatis与数据库进行交互。
感谢大家的阅读,我们下期再见!