SpringBoot 集成Mybatis 连接MySQL
刚开始学,搞这个搞了我好久。。。。记一下笔记。
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019090720323381.png)
***1、在pom.xml中添加依赖***:
<dependencies>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.4.RELEASE</version>
<relativePath />
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-jdbc</artifactId>-->
<!-- </dependency>-->
<!-- 映入tomcat -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</dependency>
<!-- 整合ssm -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-thymeleaf</artifactId>-->
<!-- </dependency>-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<!-- 没有该配置,devtools 不生效 -->
<configuration>
<fork>true</fork>
</configuration>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.1</version>
</plugin>
</plugins>
————————————————————————
2、在application.properties中配置:*
book.author=hzw
book.name=springboot
##连接数据库
spring.datasource.url=jdbc:mysql://localhost:3306/book?useUnicode=true&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=hu123
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
#mybatis.typeAliasesPackage= com.hu.springboot.test.dao
##如果BookMapper类和BookMapper.xml不在同一个路径下时用mapper-locations指定BookMapper.xml的路径
mybatis.mapper-locations = classpath:BookMapper.xml
##配置端口号
server.port=8012
————————————————————————————
3、实体类Book
package com.hu.springboot.test.dao;
public class Book {
private int bookId;
private String bookName;
private String bookAuthor;
private int bookPice;
public int getBookId() {
return bookId;
}
public void setBookId(int bookId) {
this.bookId = bookId;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getBookAuthor() {
return bookAuthor;
}
public void setBookAuthor(String bookAuthor) {
this.bookAuthor = bookAuthor;
}
public int getBookPice() {
return bookPice;
}
public void setBookPice(int bookPice) {
this.bookPice = bookPice;
}
}
————————————————————————————————————
4、启动类TestSpringBootStarter
package com.hu.springboot.test;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class TestSpringBootStarter {
public static void main(String[] args){
SpringApplication.run(TestSpringBootStarter.class, args);
}
}
—————————————————————————————————————
5、Mybatis的接口IBookMapper.java。
package com.hu.springboot.test.dao;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
@Mapper
public interface IBookMapper {
public void insert(Book book);//插入数据
public List<Book> find(int id);//查找数据
}
——————————————————————————————————————
6、对应的mapper文件,BookMapper.xml,插入数据和查找数据的程序都是在这个XML文件中生成,这个xml我放在了resources中。
<?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="com.hu.springboot.test.dao.IBookMapper"> <!--Mybatis的接口IBookMapper路径-->
<insert id="insert" parameterType="com.hu.springboot.test.dao.Book"> <!-- 实体类Book路径-->
INSERT INTO BookMast(bookId, bookName, bookAuthor, bookPice) VALUE(#{bookId},#{bookName},#{bookAuthor},#{bookPice});
</insert>
<select id="find" parameterType="int" resultType="com.hu.springboot.test.dao.Book">
SELECT * FROM bookmast where bookId =#{id};
</select>
</mapper>
–————————————————————————————————————
7、service层的接口
package com.hu.springboot.test.service;
import com.hu.springboot.test.dao.Book;
import java.util.List;
public interface IBookService {
public List<Book> find(int id);
public boolean insert(Book book);//插入数据
}
——————————————————————————————————————
8、 service层的接口的实现类
package com.hu.springboot.test.service;
import com.hu.springboot.test.dao.Book;
import com.hu.springboot.test.dao.IBookMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class BookService implements IBookService{
@Autowired
private IBookMapper iBookMapper;
@Override
public List<Book> find(int id) {
return iBookMapper.find(id);
}
@Override
public boolean insert(Book book){
if(null!=book&&book.getBookId()!=0){
iBookMapper.insert(book);
return true;
}
return false;
};
}
————————————————————————————————
9、Controller类 TestController
package com.hu.springboot.test.controller;
import com.hu.springboot.test.dao.Book;
import com.hu.springboot.test.service.IBookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping(value = "/controller")
public class TestController {
@Autowired
IBookService ibookService;
@RequestMapping(value = "/test")
public String test() {
return "test is success;";
}
@Value("${book.author}")
private String bookAuthor;
@Value("${book.name}")
private String bookName;
@RequestMapping("/book")
public String book(){
return "BookName is "+bookName+", BookAuthor -is "+bookAuthor;
}
@GetMapping("/findbook/{id}")
public List<Book> findbook(@PathVariable(value = "id") int id){
return ibookService.find(id);
}
@PostMapping("/insertbook")
public boolean insertbook(@RequestBody Book book){
return ibookService.insert(book);
}
}
Spring Boot application.ymlzhong MySQL配置:
spring:
datasource:
driver-class-name : com.mysql.cj.jdbc.Driver
url : jdbc:mysql://localhost:3306/test?serverTimezone=UTC&characterEncoding=utf-8&autoReconnect=true&useUnicode=true
username : root
password : hu6339392
mybatis:
mapper-locations: classpath:mapper/**/*.xml
config-location: classpath:mybatis-config.xml
————————————————————————————————————
总结遇到的问题吧:
1、service层的实现类没加@Service,
2、Mybatis的接口IBookMapper上没加注解@Mapper。 (添加@Mapper注解是表明该接口是一个MyBatise中的Mapper,需要在每一个Mapper上添加注解,还有一个简单的方式是在配置类上添加@MapperScan(“org.sang.mapper”)注解,可以表示扫描org.sang.mapper包下所有接口作为Mapper,我在启动类上加了一下)
3、在application.properites中没有配置:
mybatis.mapper-locations = classpath:BookMapper.xml ##用mapper-locations指定BookMapper.xml的路径
由于我的BookMapper.xml放在resources中,因此我开始配置时是这样的:
mybatis.mapper-locations = classpath:resource.BookMapper.xml 在这里多写了个resources,把resources.去掉就可以了。。。。。
一日一步,小步? 大步?
聚沙成塔,集腋成裘。