Spring boot - 整合MyBatis
一、引入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.xmlmybatis.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 {@Autowiredprivate 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 {@Autowiredprivate CourseDao courseDao;@Overridepublic 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
Spring boot - 整合MyBatis相关推荐
- Spring Boot 教程(三): Spring Boot 整合Mybatis
教程简介 本项目内容为Spring Boot教程样例.目的是通过学习本系列教程,读者可以从0到1掌握spring boot的知识,并且可以运用到项目中.如您觉得该项目对您有用,欢迎点击收藏和点赞按钮, ...
- spring boot 整合mybatis 无法输出sql的问题
使用spring boot整合mybatis,测试功能的时候,遇到到了sql问题,想要从日志上看哪里错了,但是怎么都无法输出执行的sql,我使用的是log4j2,百度了一下,很多博客都说,加上下面的日 ...
- Spring boot 整合 Mybatis 实现增删改查(MyEclipse版)
1.首先搭建好一个Spring boot 程序,编写好启动类. 启动类代码如下: @SpringBootApplication public class Start {public static vo ...
- spring boot整合mybatis+通用mapper+pagehelper分页插件
spring boot整合mybatis+通用mapper+pagehelper分页插件 pom依赖 <?xml version="1.0" encoding="U ...
- spring boot整合mybatis步骤
spring boot整合mybatis步骤 官方说明:MyBatis-Spring-Boot-Starter will help you use MyBatis with Spring Boot 其 ...
- Spring Boot整合MyBatis
最近项目原因可能会继续开始使用MyBatis,已经习惯于spring-data的风格,再回头看xml的映射配置总觉得不是特别舒服,接口定义与映射离散在不同文件中,使得阅读起来并不是特别方便. Spri ...
- Spring Boot基础学习笔记06:Spring Boot整合MyBatis
文章目录 零.学习目标 1.了解Spring Boot数据访问概述 2.掌握使用注解的方式整合MyBatis 3.掌握使用配置文件的方式整合MyBatis 一.Spring Boot数据访问概述 二. ...
- Spring Boot 整合MyBatis(23)
Spring Boot 整合MyBatis Spring Boot 整合 Druid 引入依赖 配置 application.yml pring Boot 整合 tk.mybatis 引入依赖 配置 ...
- Spring Boot 整合 MyBatis Plus实现多数据源的两种方式
第一种:使用配置类的方式: 项目结构 xml依赖: <?xml version="1.0" encoding="UTF-8"?> <proje ...
- 干货必看|Spring Boot整合MyBatis框架详解
在开发中,我们通常会对数据库的数据进行操作,Sprirng Boot对关系型数据库和非关系型数据库的访问操作都提供了非常好的整合支持.所以今天壹哥就给大家讲解一下,如何在SpringBoot环境中整合 ...
最新文章
- 关于网页乱码和字符编码方式
- javap使用实例图解
- centos7中置空一个文件的内容
- 与孩子一起学编程python_与的解释|与的意思|汉典“与”字的基本解释
- 【Breadth-first Search 】513. Find Bottom Left Tree Value
- Abbott's Revenge UVA - 816 (输出bfs路径)
- node 修改文件自启动
- 对门快递写的我家地址,总是不改过去,收到快递我怎么办?
- nodejs爬虫基础(二)
- JAVA动态申请数组
- 论文阅读笔记 | 分类网络——ParNet
- Git学习使用方法总结(1)
- Visual Studio 2022自定义(透明)主题和壁纸完整版
- 机器学习开源框架系列:Torch:1:简介与安装
- 河北省谷歌高清卫星地图下载
- win10无限蓝屏_Win10升级系统后蓝屏或无限重启解决办法
- Xposed FrameWork v89 安装
- mmorpg游戏设计之2D游戏地图的九宫格子
- C语言调试(Dev-C++)(初步)
- 从应用角度了解下LIN总线
热门文章
- 设计模式:Abstract Factory和Builder(比较区别,个人认为讲得很明白)
- Django 数据库建表的时候 No migrations to apply原因出现和解决
- Python学习笔记之列表(一)
- Spring框架中IoC(控制反转)的原理
- C# EntityFramework连接MySQL (DbFirst)
- [蓝桥杯][2018年第九届真题]约瑟夫环
- 数据决策成共识 大数据产业期待点“数”成金
- C#开发微信门户及应用(27)-公众号模板消息管理
- Java中接口定义成员变量
- Android用第三方jar包ClassNotFoundException:XXX in loader dalvik.system.PathClassLoader[/app/XX.apk]...