mybatis配置mapper注解

本文介绍了如何在Spring环境中配置MyBatis,包括定义SqlSessionFactoryBean、自动扫描Mapper接口及所需的依赖Jar包。
部署运行你感兴趣的模型镜像

        主要需注意以下配置(数据源配置网上很多):

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">


        <!-- sqlSession配置-->

        <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
</bean>


<!-- 自动扫描mapper -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

                <!-- mybatis会扫描basePackage包下所有interface-->
<property name="basePackage" value="**" />
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
</bean>
</beans>


依赖jar包(mybatis相关,其余spring依赖可自己添加):

<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>

<version>3.1.1</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>

<version>1.1.0</version>
</dependency>


您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

<think> 我们正在讨论MyBatis的@Mapper注解。根据引用内容,该注解的主要作用是替代XML映射文件,简化MyBatis配置。下面我们详细说明: 1. **核心作用**:从MyBatis 3.4.0开始引入@Mapper注解,其目的是不再需要编写XML映射文件。当我们在接口上使用@Mapper注解时,MyBatis在编译时会动态生成该接口的代理实现类,从而可以直接通过接口方法执行SQL操作[^2][^3]。 2. **实现原理**:在Spring程序中,MyBatis通过扫描@Mapper注解的接口,利用动态代理技术生成实现类。这样,我们就不需要手动编写实现类或者XML映射文件。例如: ```java @Mapper public interface UserMapper { @Insert("insert into user(name) values(#{name})") @Options(keyProperty="id", keyColumn="id", useGeneratedKeys=true) void save(User user); } ``` 这里,@Insert注解直接定义了SQL语句,而@Options注解用于配置主键生成策略[^3]。 3. **与@Param注解的协作**:当Mapper接口方法有多个参数时,可以使用@Param注解为参数命名,以便在SQL中引用。例如: ```java @Mapper public interface UserMapper { @Select("SELECT * FROM users WHERE name = #{name} AND age = #{age}") User findByNameAndAge(@Param("name") String name, @Param("age") int age); } ``` 这里,@Param("name")和@Param("age")使得SQL中的#{name}和#{age}能够正确绑定参数[^1]。 4. **优势**: - **简化配置**:无需XML文件,SQL直接写在接口方法上。 - **类型安全**:基于接口的方法调用,避免了字符串拼写错误。 - **集成方便**:在Spring Boot项目中,结合@MapperScan可以自动扫描所有Mapper接口。 5. **注意事项**: - 使用注解配置SQL适用于简单的SQL操作,复杂的动态SQL仍建议使用XML方式。 - 需要确保MyBatis版本在3.4.0及以上。 综上,@Mapper注解MyBatis提供的一种简化开发的工具,它通过动态代理技术实现了接口与SQL的绑定,减少了传统XML配置的繁琐[^2][^3]。 --- §§相关问题§§ 1. MyBatis的@Mapper注解和@Repository注解有什么区别? 2. 在MyBatis中,如何同时使用注解配置和XML配置? 3. MyBatis的@Select注解如何实现动态SQL? </think> ### MyBatis的`@Mapper`注解详解 #### 1. **核心作用:简化映射配置** - **替代XML映射文件** 从MyBatis 3.4.0开始引入`@Mapper`注解,主要目的是消除繁琐的XML映射文件配置(如`UserMapper.xml`),直接在接口中通过注解绑定SQL语句[^2][^3]。 示例: ```java @Mapper public interface UserMapper { @Insert("INSERT INTO user(name) VALUES(#{name})") // 注解代替XML void saveUser(User user); } ``` - **动态生成实现类** 编译时MyBatis自动为带`@Mapper`的接口生成代理实现类,无需手动编写实现代码。Spring程序通过扫描该注解动态创建DAO层的数据库操作对象[^2][^3]。 #### 2. **技术实现原理** - **动态代理机制** MyBatis运行时通过JDK动态代理创建接口实例,拦截方法调用并执行注解中的SQL语句。 - **参数绑定支持** 结合`@Param`注解解决多参数传递问题[^1]: ```java @Select("SELECT * FROM users WHERE name=#{name} AND age>#{minAge}") List<User> findUsers(@Param("name") String name, @Param("minAge") int age); ``` - **高级功能集成** 支持`@Options`等注解配置主键生成策略、超时控制等: ```java @Options(useGeneratedKeys=true, keyProperty="id") @Insert("INSERT INTO user(name) VALUES(#{name})") ``` #### 3. **对比XML配置的优势** | **特性** | `@Mapper`注解方案 | XML配置方案 | |----------------|--------------------------------|----------------------| | 配置复杂度 | ⭐ 低(SQL与Java代码共存) | ⭐⭐⭐ 高(需维护XML文件)| | 可读性 | ⭐⭐ 中(短SQL直观) | ⭐⭐⭐ 高(长SQL清晰) | | 重构支持 | ⭐⭐⭐ 强(编译器校验方法名) | ⭐ 弱(字符串易出错) | | 动态SQL支持 | ⭐ 有限(需配合`@Provider`注解) | ⭐⭐⭐ 强(完整标签库) | #### 4. **适用场景建议** - ✅ **推荐使用** - 简单CRUD操作(SQL语句短于3行) - 微服务等轻量级项目 - 需要快速原型开发的场景 - ⚠️ **慎用场景** - 复杂动态SQL(如多表联合查询+条件分支) - 需要重用SQL片段的项目 - 历史项目已存在大量XML配置 > **注**:在Spring Boot中常搭配`@MapperScan`批量扫描接口,避免每个接口单独标注`@Mapper`[^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值