一、引入pom依赖
在本示例中,我们采用的是mysql数据库以及使用jdbc链接方式 所以我们需要引入如下依赖:
<!-- 整合mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.0.0</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--jdbc-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
二、配置spring boot 配置文件application.properties
#日志打印 -打印sql
logging.level.com.demo.dao=debug
#数据库配置
spring.datasource.url=jdbc:mysql://localhost:3306/teachdb?characterEncoding=UTF-8
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
mybatis.config-location=classpath:mybatis-config.xml
mybatis.type-aliases-package=com.demo.bean
mybatis.mapper-locations=classpath*:com/demo/dao/*.xml
三、创建mybatis 配置文件 mybatis-config.xml
在application.properties的同级创建 mybatis-congfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
<typeAlias alias="Integer" type="java.lang.Integer" />
<typeAlias alias="Long" type="java.lang.Long" />
<typeAlias alias="HashMap" type="java.util.HashMap" />
<typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" />
<typeAlias alias="ArrayList" type="java.util.ArrayList" />
<typeAlias alias="LinkedList" type="java.util.LinkedList" />
</typeAliases>
</configuration>
四、创建工程中的controller、service、dao等package以及java类、mapper文件
我们场景为课程表编写一个数据库列表查询。mapper、dao、bean 我们使用mybatis-generator 生成。
在这里我们需要注意一些相关注解不能缺失,比如Controller上面的@Controller、Controller中的Service属性字段上面的@AutoWire 注解,ServiceImpl实现类上面的@service注解以及实现类中Dao属性的@AutoWire注解。
完整项目结构如下:
├─main
│ ├─java
│ │ └─com
│ │ └─demo
│ │ │ Application.java
│ │ ├─bean
│ │ │ Course.java
│ │ │ CourseExample.java
│ │ │ User.java
│ │ ├─controller
│ │ │ CourController.java
│ │ │ CourseController.java
│ │ │ PageController.java
│ │ │ UserController.java
│ │ ├─dao
│ │ │ CourseDao.java
│ │ │ CourseMapper.xml
│ │ ├─filter
│ │ │ LoginFilter.java
│ │ ├─service
│ │ │ CourseService.java
│ │ └─serviceImpl
│ │ CourseServiceImpl.java
│ │
│ └─resources
│ │ application.properties
│ │ mybatis-config.xml
│ ├─static
│ │ index.html
│ └─templates
│ header.html
│ index.html
│ courList.html
└─test
├─java
└─resources
com.demo.controller.CourseController:
@Controller
@RequestMapping(value="/course")
public class CourseController {
@Autowired
private CourseService courseService;
@RequestMapping(value="/getCourList",method=RequestMethod.GET)
public String getCourList(Course course,ModelMap mp){
List<Course> list = courseService.getCourList(course);
mp.put("courList", list);
return "courList";
}
}
com.demo.serviceImpl.CourseServiceImpl:
@Service
public class CourseServiceImpl implements CourseService {
@Autowired
private CourseDao courseDao;
@Override
public List<Course> getCourList(Course course) {
CourseExample example = new CourseExample();
List<Course> cours = courseDao.selectByExample(example);
return cours;
}
}
/bootdemo/src/main/resources/templates/courList.html:
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8" />
<title>Insert title here</title>
<style type="text/css">
.odd{background: #ccc;}
table{ border-collapse:collapse; }
</style>
</head>
<body>
<table border="1" >
<tr><th>id</th><th>name</th><th>cour_desc</th></tr>
<tr th:each="cour,courStat : ${courList}" th:class="${courStat.odd}? 'odd'" th:index="${courStat.index}" th:count ="${courStat.count}" th:isFirst="${courStat.first}" th:isLast="${courStat.Last}">
<td th:text="${cour.courId}">Onions</td>
<td th:text="${cour.courName}">Onions</td>
<td th:text="${cour.courDesc}">Onions</td>
</tr>
</table>
</body>
</html>
五、配置dao文件的扫描路径
我们可以在生成的所有 Dao类上面添加@Mapper 注解。
@Mapper
public interface CourseDao {
//...
}
或者在主启动类上面直接添加dao扫描路径
@ComponentScan("com.demo")
@MapperScan("com.demo.dao")
@SpringBootApplication
public class Application {
//...
}
如不进行如上操作 我们的实现类中将无法根据AutoWire进行找到对应类而报错。
六、启动测试
我们启动项目后 访问路径:http://127.0.0.1:8080/WebDemo/course/getCourList
结果如下:
代码记录:https://github.com/liuhenghui/SpringBootDemo/commit/3df874a954913e57a90eee264bec89f823d4e920
代码记录2:https://github.com/liuhenghui/SpringBootDemo/commit/efae964f93715595ac96dea36c01a4ce891a5d71