MyBatis实战之Mapper注解的示例
作者:dazhong2012
一、Mapper 接口注解
MyBatis 是一个流行的 Java 数据持久层框架,它允许使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects)映射成数据库中的记录。
在 MyBatis 中,Mapper 接口用于定义与数据库交互的方法,而注解如 @Select、@Insert、@Update 和 @Delete 等则用于直接在接口方法上声明 SQL 语句。
常用注解的使用示例
1. @Select
用于执行 SQL 查询操作。
import org.apache.ibatis.annotations.Select; public interface UserMapper { @Select("SELECT * FROM users WHERE id = #{id}") User getUserById(int id); }
2. @Insert
用于执行 SQL 插入操作。
import org.apache.ibatis.annotations.Insert; public interface UserMapper { @Insert("INSERT INTO users(name, email) VALUES(#{name}, #{email})") void insertUser(User user); }
3. @Update
用于执行 SQL 更新操作。
import org.apache.ibatis.annotations.Update; public interface UserMapper { @Update("UPDATE users SET name=#{name}, email=#{email} WHERE id=#{id}") void updateUser(User user); }
4. @Delete
用于执行 SQL 删除操作。
import org.apache.ibatis.annotations.Delete; public interface UserMapper { @Delete("DELETE FROM users WHERE id=#{id}") void deleteUserById(int id); }
5. @Results 和 @Result
用于映射结果集的列到对象的属性。虽然它们不是直接用于 SQL 操作,但通常在 @Select 注解中使用来定义结果集的映射。这里添加一个使用 DTO 类型的示例。
import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Results; import org.apache.ibatis.annotations.Select; public interface UserMapper { @Select("SELECT id, name, email FROM users WHERE id = #{id}") @Results({ @Result(property = "userId", column = "id"), @Result(property = "userName", column = "name"), @Result(property = "userEmail", column = "email") }) UserDTO getUserByIdWithDTO(int id); } // 定义一个 DTO 类 public class UserDTO { private int userId; private String userName; private String userEmail; // getters and setters }
在这个例子中,getUserByIdWithDTO
方法不仅执行查询操作,还使用 @Results
和 @Result
注解来将结果集的列映射到 UserDTO 对象的属性。注意,DTO 类的属性名(如 userId、userName 和 userEmail)可能与数据库表的列名不同,这里通过 @Result
注解的 property
和 column
属性来指定映射关系。
二、使用 MyBatis Mapper 接口的步骤
- 定义 Mapper 接口:在接口中定义方法并使用注解来配置 SQL 语句。
- 配置 MyBatis:在 MyBatis 配置文件中注册 Mapper 接口(或使用 Java 配置类)。
- 使用 SqlSessionFactory:通过 SqlSessionFactory 获取 SqlSession,然后使用 SqlSession 获取 Mapper 接口的实例。
- 调用 Mapper 方法:通过 Mapper 接口的实例调用方法执行数据库操作。
示例代码
import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; public class MyBatisExample { public static void main(String[] args) { SqlSessionFactory sqlSessionFactory = MyBatisUtil.getSqlSessionFactory(); try (SqlSession session = sqlSessionFactory.openSession()) { UserMapper userMapper = session.getMapper(UserMapper.class); UserDTO userDTO = userMapper.getUserByIdWithDTO(1); System.out.println(userDTO); } } }
在这个示例中,MyBatisUtil 是一个工具类,用于获取 SqlSessionFactory 实例。需要根据 MyBatis 配置来实现这个工具类。通过这种方式,可以使用 MyBatis 的注解来简化数据库操作的配置,并使用 DTO 类来封装查询结果。
到此这篇关于MyBatis 实战之 Mapper 注解的文章就介绍到这了,更多相关MyBatis 实战之 Mapper 注解内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!