详解Spring+SpringMVC+MyBatis整合注解
Spring、SpringMVC和MyBatis是Java Web应用程序开发中常用的框架。在本文中,我们将介绍如何将这三个框架整合在一起,并使用注解来简化配置。
步骤1:添加依赖
首先,我们需要在pom.xml
文件中添加Spring、SpringMVC和MyBatis的依赖。以下是一个简单的依赖示例:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.9</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.9</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
</dependencies>
步骤2:配置Spring
接下来,我们需要在Spring配置文件中配置Spring和MyBatis。在src/main
目录下创建一个名为applicationContext.xml
的文件,并添加以下内容:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
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.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<context:component-scan base-package="com.example"/>
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC"/>
<property name="username" value="root"/>
<property name="password" value="password"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="com.example.model"/>
<property name="mapperLocations" value="classpath*:com/example/mapper/*.xml"/>
</bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven/>
</beans>
在上面的配置文件中,我们使用了<context:component-scan>
元素来扫描com.example
包中的组件。我们还使用了<bean>
元素来配置数据源和MyBatis会话工厂。我们还使用了<tx:annotation-driven>
元素来启用注解驱动的事务管理。
步骤3:配置SpringMVC
接下来,我们需要在SpringMVC配置文件中配置SpringMVC。src/main/resources
目录下创建一个名为spring-servlet.xml
的文件,并添加以下内容:
<beans xmlns="http://www.springframework.org/schema/"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
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.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<context:component-scan base-package="com.example"/>
<mvc:annotation-driven/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
在上面的配置文件中,使用了<context:component-scan>
元素来扫描com.example
包的组件。我们还使用了<mvc:annotation-driven>
元素来启用注解驱动的Spring。我们还使用了<bean>
元素来配置视图解析器。
步骤4:配置事务管理
最后,我们需要在Spring配置文件中配置事务管理。在applicationContext.xml
文件中添加以下内容:
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*"/>
<tx:method name="update*"/>
<tx:method name="delete*"/>
<tx:method name="*"/>
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut id="serviceMethods" expression="execution(* com.example.service.*.*(..))"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="serviceMethods"/>
</aop:config>
在上面的配置文件中,我们使用了<tx:advice>
元素来定义事务管理器,并使用<tx:attributes>
元素来定义哪些方法需要进行事务管理。我们还使用了<aop:config>
元素来定义切入点和通知器。
示例1:使用MyBatis进行数据访问
以下是一个示例,演示如何使用MyBatis进行数据访问:
@Repository
public class UserDaoImpl implements UserDao {
@Autowired
private SqlSessionFactory sqlSessionFactory;
@Override
@Transactional(readOnly = true)
public User findById(Long id) {
try (SqlSession session = sqlSessionFactory.openSession()) {
return session.selectOne("com.example.mapper.UserMapper.findById", id);
}
}
@Override
@Transactional
public void save(User user) {
try (SqlSession session = sqlSessionFactory.openSession()) {
session.insert("com.example.mapper.UserMapper.save", user);
session.commit();
}
}
@Override
@Transactional
public void update(User user) {
try (SqlSession session = sqlSessionFactory.openSession()) {
session.update("com.example.mapper.UserMapper.update", user);
session.commit();
}
}
@Override
@Transactional
public void delete(User user) {
try (SqlSession session = sqlSessionFactory.openSession()) {
session.delete("com.example.mapper.UserMapper.delete", user);
session.commit();
}
}
}
在上面的示例中,我们使用了MyBatis的SqlSessionFactory
对象来进行数据访问,并使用了@Transactional
注解来启用事务管理。
示例2:使用SpringMVC进行Web开发
以下是一个示例,演示如何使用SpringMVC进行Web开发:
@Controller
@RequestMapping("/users")
public class UserController {
@Autowired
private UserService userService;
@GetMapping("/{id}")
public String getUser(@PathVariable Long id, Model model) {
User user = userService.findById(id);
model.addAttribute("user", user);
return "user";
}
@PostMapping
@Transactional
public String createUser(@ModelAttribute User user) {
userService.save(user);
return "redirect:/users/" + user.getId();
}
@PutMapping("/{id}")
@Transactional
public String updateUser(@PathVariable Long id, @ModelAttribute User user) {
user.setId(id);
userService.update(user);
return "redirect:/users/" + id;
}
@DeleteMapping("/{id}")
@Transactional
public String deleteUser(@PathVariable Long id) {
User user = userService.findById(id);
userService.delete(user);
return "redirect:/users";
}
}
在上面的示例中,我们使用了SpringMVC的@GetMapping
、@PostMapping
、@PutMapping
和@DeleteMapping
注解来处理GET、POST、PUT和DELETE请求。还使用了ModelAttribute
注解来获取请求参数,并使用Model
对象来传递数据到视图中。我们还使用了@Transactional
注解来启用事务管理。
以上就是Spring+SpringMVC+MyBatis整合注解的完整攻略,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解spring+springmvc+mybatis整合注解 - Python技术站