mybatis Mapper代理开发
MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。Mapper 是 MyBatis 中用于定义 SQL 语句和映射规则的接口或 XML 文件。下
- Mapper 接口
定义方式:Mapper 接口用于定义 SQL 操作的抽象方法,不需要实现类。
注解方式:可以使用注解(如 @Select, @Insert, @Update, @Delete)直接在方法上定义 SQL 语句。
XML 文件方式:在 XML 文件中定义 SQL 语句,并通过 namespace 和方法名进行关联。 - XML 配置文件
文件命名:通常命名为 Mapper 接口名加上 .xml,例如 UserMapper.xml。
namespace:XML 文件的 namespace 属性必须与 Mapper 接口的全限定名一致。
SQL 语句:在 select, insert, update, delete 标签中定义 SQL 语句。 - 基本标签
select:用于定义查询语句。
insert:用于定义插入语句。
update:用于定义更新语句。
delete:用于定义删除语句。
resultMap:用于定义结果集映射,将查询结果映射到 Java 对象。 - 参数传递
单个参数:直接在 SQL 语句中使用 #{参数名}。
多个参数:可以使用 @Param 注解为参数命名,或使用 Map 传递多个参数。
对象参数:直接传递一个对象,可以在 SQL 语句中使用对象的属性名。 - 代码示例
Mapper 接口
public interface UserMapper {
User selectUserById(int id);
List<User> selectAllUsers();
void insertUser(User user);
void updateUser(User user);
void deleteUser(int id);
}
XML 配置文件
<?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="com.example.mapper.UserMapper">
<select id="selectUserById" parameterType="int" resultType="com.example.model.User">
SELECT * FROM users WHERE id = #{id}
</select>
<select id="selectAllUsers" resultType="com.example.model.User">
SELECT * FROM users
</select>
<insert id="insertUser" parameterType="com.example.model.User">
INSERT INTO users (name, email) VALUES (#{name}, #{email})
</insert>
<update id="updateUser" parameterType="com.example.model.User">
UPDATE users SET name = #{name}, email = #{email} WHERE id = #{id}
</update>
<delete id="deleteUser" parameterType="int">
DELETE FROM users WHERE id = #{id}
</delete>
</mapper>
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南