spring如何整合mybatis的
-
Spring整合MyBatis的方式有两种:XML配置方式和注解方式。
一、XML配置方式:
步骤如下:
- 首先,需要在Spring配置文件中引入MyBatis的命名空间,并配置数据源。
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mybatis="http://mybatis.org/schema/mybatis-spring" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring.xsd"> <!-- 配置数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <!-- 配置数据源相关属性 --> ... </bean> <!-- 配置SqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 设置MyBatis的配置文件位置 --> <property name="configLocation" value="classpath:mybatis-config.xml" /> <!-- 设置数据源 --> <property name="dataSource" ref="dataSource" /> </bean> <!-- 配置MapperScannerConfigurer --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <!-- 设置扫描的包路径 --> <property name="basePackage" value="com.example.dao" /> <!-- 设置SqlSessionFactory --> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> </bean> </beans>- 接下来,需要编写MyBatis的配置文件(mybatis-config.xml),配置一些MyBatis的核心参数,如数据库连接信息、类型别名、插件等。
<configuration> <!-- 配置数据源 --> <environments default="default"> <environment id="default"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/test" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> <!-- 配置类型别名 --> <typeAliases> <package name="com.example.model" /> </typeAliases> <!-- 配置Mapper扫描路径 --> <mappers> <mapper resource="com/example/dao/UserMapper.xml" /> <!-- 或者使用类路径扫描 --> <!--<package name="com.example.dao" />--> </mappers> <!-- 配置插件 --> <plugins> <plugin interceptor="com.example.plugin.MyPlugin" /> </plugins> </configuration>- 编写DAO接口和对应的Mapper XML文件。
public interface UserMapper { User getUserById(int id); } <!-- UserMapper.xml --> <mapper namespace="com.example.dao.UserMapper"> <select id="getUserById" resultType="com.example.model.User"> SELECT * FROM user WHERE id = #{id} </select> </mapper>- 编写Service和ServiceImpl。
public interface UserService { User getUserById(int id); } @Service public class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; public User getUserById(int id) { return userMapper.getUserById(id); } }至此,Spring和MyBatis的整合已经完成。你可以直接注入UserService来使用MyBatis操作数据库。
二、注解方式:
除了XML配置方式外,还可以使用注解的方式配置Spring和MyBatis的整合。
- 在Spring配置文件中引入以下命名空间:
xmlns:mybatis="http://mybatis.org/schema/mybatis-spring"-
配置数据源和SqlSessionFactory同样需要使用XML配置方式,在此不再赘述。
-
配置Mapper接口扫描路径和MapperScannerConfigurer。
<!-- 配置Mapper接口扫描路径 --> <mybatis:scan base-package="com.example.dao" /> <!-- 配置MapperScannerConfigurer --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.example.dao" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> </bean>- 在Mapper接口的方法上使用注解进行SQL的配置。
public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User getUserById(int id); @Insert("INSERT INTO user (name, age, gender) VALUES (#{name}, #{age}, #{gender})") int insertUser(User user); @Update("UPDATE user SET name = #{name}, age = #{age}, gender = #{gender} WHERE id = #{id}") int updateUser(User user); @Delete("DELETE FROM user WHERE id = #{id}") int deleteUser(int id); }使用注解方式配置的好处是简洁明了,但缺点是SQL语句与Java代码耦合度较高。
以上就是整合Spring和MyBatis的两种常用方式。在实际项目中,根据需求和个人喜好选择适合的方式即可。
1年前 -
Spring可以通过使用Spring的扩展模块来实现与MyBatis的整合。下面是整合Spring和MyBatis的一般步骤:
-
配置数据源
在Spring的配置文件中配置数据源,可以使用Spring自带的数据源或者第三方数据源,如Apache Commons DBCP、C3P0等。 -
配置MyBatis的SqlSessionFactoryBean
使用Spring的SqlSessionFactoryBean来配置MyBatis的SqlSessionFactory,SqlSessionFactoryBean是Spring对MyBatis的集成提供的一个工厂Bean,用于创建SqlSessionFactory。 -
配置MyBatis的MapperScannerConfigurer
使用Spring的MapperScannerConfigurer来自动扫描并注册MyBatis的Mapper接口。通过在Spring的配置文件中配置MapperScannerConfigurer,可以指定要扫描的Mapper接口的包路径,Spring会自动为这些接口生成实例并注册到Spring容器中。 -
配置事务管理
在Spring的配置文件中配置事务管理器,可以选择使用Spring的事务管理器,如DataSourceTransactionManager,也可以使用其他第三方事务管理器,如Atomikos、Bitronix等。 -
编写Mapper接口和Mapper映射文件
编写MyBatis的Mapper接口,在接口中定义数据库操作方法,并在Mapper映射文件中配置具体的SQL语句。
完成上述步骤后,Spring和MyBatis就完成了整合。在Spring的业务逻辑中,可以直接注入Mapper接口的实例,并调用其中的方法来进行数据库操作。Spring会自动管理MyBatis的SqlSession的生命周期,并提供事务支持。
需要注意的是,配置文件的具体配置和使用的依赖库可能会根据具体的项目和版本而有所不同,需要根据实际情况进行调整。
1年前 -
-
Spring与MyBatis的整合是非常常见的,可以通过以下步骤来完成整合:
- 添加依赖:
首先,你需要在你的项目中添加Spring和MyBatis的依赖。在你的pom.xml文件中添加以下依赖:
<!-- Spring核心依赖 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.8.RELEASE</version> </dependency> <!-- Spring与MyBatis整合依赖 --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.3</version> </dependency> <!-- MyBatis依赖 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.5</version> </dependency> <!-- 数据库驱动依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.21</version> </dependency>你可以根据自己的需求,选择合适的版本。
- 配置数据源:
接下来,你需要配置数据源。在Spring Boot中,你可以在application.properties文件中配置数据源,例如:
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver- 创建数据源对象:
在Spring中,你需要配置一个数据源对象。你可以通过使用@Configuration和@Bean注解来完成这个任务。例如:
@Configuration public class DataSourceConfig { @Value("${spring.datasource.url}") private String url; @Value("${spring.datasource.username}") private String username; @Value("${spring.datasource.password}") private String password; @Value("${spring.datasource.driver-class-name}") private String driverClassName; @Bean public DataSource getDataSource() { DriverManagerDataSource dataSource = new DriverManagerDataSource(); dataSource.setUrl(url); dataSource.setUsername(username); dataSource.setPassword(password); dataSource.setDriverClassName(driverClassName); return dataSource; } }- 配置MyBatis:
接下来,你需要配置MyBatis。你可以创建一个MyBatis配置类,并通过使用@MapperScan注解来扫描Mapper接口。例如:
@Configuration @MapperScan("com.example.mapper") public class MyBatisConfig { @Autowired private DataSource dataSource; @Bean public SqlSessionFactoryBean sqlSessionFactory() throws Exception { SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean(); sessionFactory.setDataSource(dataSource); return sessionFactory; } }- 创建Mapper接口和Mapper XML文件:
在MyBatis中,你需要创建Mapper接口和对应的Mapper XML文件。Mapper接口用来定义数据库操作,而Mapper XML文件用来定义具体的SQL语句和映射关系。例如:
public interface UserMapper { User getUserById(Long id); } <!-- UserMapper.xml --> <mapper namespace="com.example.mapper.UserMapper"> <select id="getUserById" parameterType="java.lang.Long" resultType="com.example.entity.User"> SELECT * FROM user WHERE id = #{id} </select> </mapper>- 注入Mapper接口:
最后,你需要在需要使用Mapper接口的地方进行注入。你可以使用@Autowired注解将Mapper接口注入到Spring容器中。例如:
@Service public class UserService { @Autowired private UserMapper userMapper; public User getUserById(Long id) { return userMapper.getUserById(id); } }至此,Spring与MyBatis的整合就完成了。你可以在Spring中使用MyBatis的Mapper接口来进行数据库操作。
1年前 - 添加依赖: