把 MyBatis 相关的依赖包添加到 pom.xml 文件中,具体代码如下 :
<properties>
<mysql-connector-java.version>8.0.17</mysql-connector-java.version>
<mybatis.version>3.5.2</mybatis.version>
<mybatis-spring.version>2.0.2</mybatis-spring.version>
<druid.version>1.1.20</druid.version>
</properties>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-connector-java.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring.version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid.version}</version>
</dependency>
</dependencies>
在 /src/main/resources 目录下创建 jdbc.properties 配置文件,具体代码如下:
//驱动
jdbc.driverClassName = com.mysql.jdbc.Driver
//mysql连接信息
jdbc.url = jdbc:mysql://192.168.123.229/testdb
jdbc.username = root
jdbc.password = 12345
在 /src/main/resources/spring-mvc.xml 配置文件中添加如下配置:
<!-- 1.配置数据库相关参数 -->
<context:property-placeholder location="classpath:jdbc.properties" ignore-unresolvable="true"/>
<!-- 2.使用阿里巴巴的数据连接池druid -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<!-- 3.配置 SqlSessionFactory 对象 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据库连接池 -->
<property name="dataSource" ref="dataSource"/>
<!-- 扫描 sql配置文件:mapper所需的xml文件 -->
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory"/>
</bean>
<!-- 扫描 basePackage 下所有以@MyBatisDao 注解的接口 -->
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<property name="basePackage" value="my.dao"/>
</bean>
数据表创建完成后,在 /src/main/java/my.model 目录下创建对应的实体类User,具体代码如下:
package my.model;
import java.io.Serializable;
public class User implements Serializable {
private Integer id;
private String username;
public Integer getId()
{
return id;
}
public String getUsername()
{
return username;
}
}
接着在 /src/main/java/my.dao 目录下创建对应的DAO接口,提供findAll方法来查询所有用户,代码如下:
package my.dao;
import java.util.List;
import my.model.User;
import org.springframework.stereotype.Repository;
@Repository
public interface UserDao {
List<User> findAll();
}
接着在 /src/main/java/my.service 目录下创建对应的服务层接口 UserService,代码如下:
package my.service;
import java.util.List;
import my.model.User;
public interface UserService {
List<User> findAll();
}
接着在 /src/main/java/my.service.impl 目录下创建对应的服务层实现类 UserServiceImpl,代码如下:
package my.service.impl;
import my.dao.UserDao;
import my.model.User;
import my.service.UserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
@Resource
private UserDao userDao;
@Override
public List<User> findAll() {
return userDao.findAll();
}
}
需要在spring-mvc.xml加入my.service的扫描配置
<!-- 扫描 service(服务层),并且扫描其中的注解 -->
<context:component-scan base-package="my.service"/>
在 /src/main/java/my.controller 目录下创建用户控制器类UserController,代码如下:
package my.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
import my.service.UserService;
import my.model.User;
import javax.annotation.Resource;
@Controller
@RequestMapping("user")
public class UserController {
@Resource
private UserService userService;
@RequestMapping("/list")
public String list(Model model)
{
List<User> userList = userService.findAll();
model.addAttribute("title","用户列表");
model.addAttribute("userList",userList);
return "user/list";
}
}
在 /src/main/resources下创建mapper目录,并添加UserMapper.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="my.dao.UserDao">
<!-- 设置要获取的字段 -->
<sql id="userField">
u.id as "id",
u.username as "username"
</sql>
<!-- 获取所有用户 -->
<select id="findAll" resultType="my.model.User">
select
<include refid="userField"/>
from user as u
</select>
</mapper>
在/src/main/webapp/WEB-INF/views新增user目录,并创建list.jsp文件,代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>${title}</title>
</head>
<body>
<table>
<tbody>
<tr>
<th>ID</th>
<th>账号</th>
</tr>
<c:if test="${!empty userList }">
<c:forEach items="${userList}" var="user">
<tr>
<td>${user.id }</td>
<td>${user.username }</td>
</tr>
</c:forEach>
</c:if>
</tbody>
</table>
</body>
</html>
编译运行,在浏览器输入http://localhost:8080/user/list即可看到效果