在SpringBoot中整合mybatis相对于ssm整合来说简单许多。
一、环境配置
1、依赖包
1、springboot和mybatis的starter
2、mysql的jar包
3、durid数据库连接池
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.9</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.10</version>
</dependency>
2、yml配置文件
以下文件可能需要更改编码,这在编译器中操作
debug: true
spring:
devtools:
restart:
enabled: true #设置开启热部署
thymeleaf:
cache: false
datasource:
druid:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/study?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: 342425
initial-size: 5
min-idle: 5
max-active: 20
max-wait: 30000
time-between-eviction-runs-millis: 60000
min-evictable-idle-time-millis: 300000
validation-query: select '1' from dual
test-while-idle: true
test-on-borrow: false
test-on-return: false
pool-prepared-statements: true
max-open-prepared-statements: 20
max-pool-prepared-statement-per-connection-size: 20
filters: stat,wall
aop-patterns: com.springboot.servie.*
#mybatis的设置,可以不使用
mybatis:
mapper-locations: classpath:mapper/*.xml
二、测试用例
测试用例使用接口开发,并且使用注解代替了映射文件,将结果返回到前端网页。前端网页使用Thymeleaf呈现。
1、实体Bean
2、Mybatis映射接口
3、服务接口(本接口可以省去,直接使用上一个接口)
4、服务实现类
5、控制器
6、前端页面
1、实体类Actor
以下代码略去toString、get、set方法。
@Component
public class Actor {
private Integer actor_id;
private String first_name;
private String last_name;
private Date last_update;
public Actor() {
}
public Actor(Integer actor_id, String first_name, String last_name, Date last_update) {
this.actor_id = actor_id;
this.first_name = first_name;
this.last_name = last_name;
this.last_update = last_update;
}
2、映射接口
使用接口,并且接口使用注解获得映射,不使用映射xml文件。
@Mapper、@Select两个直接分别说明这是一个映射接口、以及对应的SQL语句。
@Mapper
@Repository
public interface ActorDao {
@Select(" select * from actor where actor_id <#{x}")
ArrayList<Actor> getActor(Integer actor_id);
}
3、服务接口
服务接口用来接收映射结果(本接口可以省去,直接使用上一个接口),为了降低耦合。
@Repository
public interface ActorDaoMapper {
ArrayList<Actor> getActor(Integer actor_id);
}
4、服务实现类
实现了上面的接口,得到查询结果。
@Component
public class ActorDaoimpl implements ActorDaoMapper{
@Autowired
ActorDao actorDao;
@Override
public ArrayList<Actor> getActor(Integer actor_id) {
return actorDao.getActor(actor_id);
}
}
5、控制器
控制器将结果返回前端页面。
@Controller
@RequestMapping("/A")
public class ActorQuery {
@Autowired
ActorDaoimpl actorDaoimpl;
@RequestMapping(value = "/actor")
public String ActorService( Model model){
List<Actor> actors=actorDaoimpl.getActor(9);
model.addAttribute("actor",actors);
System.out.println(actors);
return "actors";
}
}
6、前端页面
呈现查询结果,使用了Thymeleaf技术。
<table class="table" border="1px">
<tr>
<th>id</th>
<th>name</th>
<th>name</th>
<th>date</th>
</tr>
<tr th:each="x:${actor}">
<td th:text="${x.actor_id}"></td>
<td th:text="${x.first_name}"></td>
<td th:text="${x.last_name}"></td>
<td th:text="${x.last_update}"></td>
</tr>
</table>
页面如下