这篇攻略主要介绍如何整合Spring、Mybatis和Spring MVC三个开源框架,让我们能够更轻松、更高效的构建Web应用程序。
简介
Spring是一个开源的JavaEE框架,用于开发企业级Web应用程序。Mybatis是一款轻量级的Java ORM框架,很适合与Spring集成。Spring MVC是Spring框架的一部分,用于构建Web应用程序。
步骤
Step 1. 创建一个Maven项目
首先,我们创建一个Maven项目,命名为spring-mybatis-demo
,使用Java 8或更高版本。在pom.xml
文件中加入以下依赖:
<dependencies>
<!-- Spring Core -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<!-- Spring Context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<!-- Spring MVC -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.2.5.RELEASE</version>
</dependency>
<!-- Mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<!-- Mybatis-Spring -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>2.0.4</version>
</dependency>
<!-- MySQL Connector -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.20</version>
</dependency>
</dependencies>
Step 2. 添加数据库连接
创建一个名为config.properties
的文件,在其中加入以下属性:
jdbc.url=jdbc:mysql://localhost:3306/spring-demo?useSSL=false
jdbc.username=root
jdbc.password=root
其中,jdbc.url
是数据库的连接URL,jdbc.username
和jdbc.password
是数据库的用户名和密码。
Step 3. 创建数据库和数据表
我们创建一个名为spring-demo
的数据库,并在其中创建一个user
表,表结构如下:
CREATE TABLE `user` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`email` VARCHAR(255) NOT NULL,
`password` VARCHAR(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
Step 4. 创建数据访问层接口和实现类
创建一个名为UserMapper
的Java接口,包含以下方法:
public interface UserMapper {
List<User> findAll();
}
创建一个名为UserMapperImpl
的Java类,实现UserMapper
接口:
@Repository
public class UserMapperImpl implements UserMapper {
private SqlSessionFactory sessionFactory;
@Autowired
public UserMapperImpl(SqlSessionFactory sessionFactory) {
this.sessionFactory = sessionFactory;
}
@Override
public List<User> findAll() {
try (SqlSession session = sessionFactory.openSession()) {
return session.selectList("user.findAll");
}
}
}
在src/main/resources
目录下创建一个名为UserMapper.xml
的Mybatis映射文件:
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="user">
<select id="findAll" resultType="User">
SELECT * FROM user
</select>
</mapper>
Step 5. 创建控制器
创建一个名为UserController
的Java类,包含以下方法:
@Controller
public class UserController {
private UserMapper userMapper;
@Autowired
public UserController(UserMapper userMapper) {
this.userMapper = userMapper;
}
@RequestMapping("/")
public String home(Model model) {
List<User> users = userMapper.findAll();
model.addAttribute("users", users);
return "home";
}
}
Step 6. 创建视图
在src/main/webapp/WEB-INF/views
目录下创建一个名为home.jsp
的JSP文件,包含以下内容:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Spring-Mybatis Demo</title>
</head>
<body>
<h1>Users</h1>
<table>
<thead>
<tr>
<th>Id</th>
<th>Name</th>
<th>Email</th>
</tr>
</thead>
<tbody>
<c:forEach var="user" items="${users}">
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.email}</td>
</tr>
</c:forEach>
</tbody>
</table>
</body>
</html>
Step 7. 配置Spring
在src/main/resources
目录下创建一个名为applicationContext.xml
的Spring配置文件,配置以下内容:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
</bean>
<bean id="userMapper" class="com.example.mapper.UserMapperImpl">
<constructor-arg ref="sqlSessionFactory"/>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
Step 8. 配置Spring MVC
在src/main/webapp/WEB-INF
目录下创建一个名为spring-servlet.xml
的Spring MVC配置文件,配置以下内容:
<context:component-scan base-package="com.example.controller"/>
<mvc:annotation-driven/>
Step 9. 部署应用程序
最后,我们使用Maven将项目打包成WAR文件,并部署到Tomcat中。我们可以通过访问http://localhost:8080/spring-mybatis-demo/
来查看我们的Web应用程序。
示例
示例1: 添加用户
我们修改UserController
类,添加一个添加用户的方法:
@RequestMapping(value = "/addUser", method = RequestMethod.POST)
public String addUser(@ModelAttribute User user, Model model) {
userMapper.addUser(user);
List<User> users = userMapper.findAll();
model.addAttribute("users", users);
return "home";
}
修改home.jsp
,增加一个表单来添加用户:
<form action="addUser" method="post">
<p>
<label>姓名:</label>
<input type="text" name="name"/>
</p>
<p>
<label>邮箱:</label>
<input type="text" name="email"/>
</p>
<p>
<label>密码:</label>
<input type="password" name="password"/>
</p>
<p>
<input type="submit" value="提交"/>
</p>
</form>
在UserMapper
中新增加一个添加用户的方法:
public interface UserMapper {
List<User> findAll();
void addUser(User user);
}
在UserMapper.xml
中新增加一条INSERT语句:
<insert id="addUser" parameterType="User">
INSERT INTO user (name, email, password) VALUES
(#{name}, #{email}, #{password})
</insert>
示例2: 删除用户
我们修改UserController
类,添加一个删除用户的方法:
@RequestMapping("/deleteUser")
public String deleteUser(@RequestParam int id, Model model) {
userMapper.deleteUser(id);
List<User> users = userMapper.findAll();
model.addAttribute("users", users);
return "home";
}
修改home.jsp
,在表格中增加一个删除按钮:
<c:forEach var="user" items="${users}">
<tr>
<td>${user.id}</td>
<td>${user.name}</td>
<td>${user.email}</td>
<td><a href="deleteUser?id=${user.id}">删除</a></td>
</tr>
</c:forEach>
在UserMapper
中新增加一个删除用户的方法:
public interface UserMapper {
List<User> findAll();
void addUser(User user);
void deleteUser(int id);
}
在UserMapper.xml
中新增加一条DELETE语句:
<delete id="deleteUser" parameterType="int">
DELETE FROM user WHERE id = #{id}
</delete>
结论
我们完成了Spring、Mybatis和Spring MVC三个框架的整合。该框架结构能够让我们更快、更高效的构建Web应用程序。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring整合mybatis、springMVC总结 - Python技术站