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.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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值