Springboot使用mybatis
第一步:选择我们需要的maven(我们需要jdbc,web,mysql,和lombok)
第二步:配置yml(spring datasource(数据库)和mybatis)
其中也就是spring datasource下的username,password,url以及driver-class-name
spring:
datasource:
username: root
password: 495910871a
url: jdbc:mysql://localhost:3306/vuedemo?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
type-aliases-package: com.example.vue.pojo
mapper-locations: classpath:mybatis/mapper/*.xml
server:
port: 8081
第三步:就是去写我们的mvc的架构了
- 首先就是我们pojo类(根据我们的数据库写好我们的字段,注解@data代表get,set
@NoArgsConstructor代表无参构造,@AllArgsConstructor代表有参构造)
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Book {
private Integer id;
private String name;
private String author;
private String publish;
private Integer page;
}
- 我们的mapper接口写好我们想要查的方法(结果集)上面需要我们的@Mapper和@Component这个注解交给我们spring容器管理
@Mapper
@Component
public interface BookMapper {
List<Book> queryBookList();
}
- 就是写我们的.xml(里面就是我们的sql语句)
<?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.example.vue.mapper.BookMapper">
<select id="queryBookList" resultType="Book">
select * from book
</select>
<select id="queryBookById" resultType="Book">
select * from book where id=#{id}
</select>
</mapper>
- 注意我们的yml配置mybatis的一个设置
type-aliases-package:写的是我们的实体类的位置到pojo
mapper-locations:配置的就是我们发现我们写sql语句的xml位置。注意我们这里的位置classpath这里的位置其实就是在我们resources文件了。所以下面mybatis/mapper/*.xml前面不加/(若是加了/就代表这从最上面的vue这里开始了)
- 写我们的service层(其中是一个接口,一个接口的实现类)
这个接口其实就是也是我们的BookMapper下的方法(上面没有任何参数)
public interface BookService {
List<Book> queryBookList();
}
下面的实现类实现我们的接口需要注解@Service。然后将我们这个接口注入进来(我们去使用其中的方法嘛)
@Service
public class BookServiceImpl implements BookService{
@Autowired
private BookMapper bookMapper;
@Override
public List<Book> queryBookList() {
List<Book> bookList = bookMapper.queryBookList();
return bookList;
}
}
- 最后就是我们controller层了(注入我们的service服务)类上是我们的@RestController
方法上是我们访问路径 @GetMapping("/book")
import java.util.List;
@RestController
public class BookController {
@Autowired
private BookService bookService;
@GetMapping("/book")
public List<Book> queryBookList(){
List<Book> books = bookService.queryBookList();
for (Book book:books){
System.out.println(book);
}
return books;
}
}
第四步:如何测试出我们连接的数据库是否连接成功(在测试里面)需要注入我们的DataSource然后打印下我们的dataSource.getCLass()以及dataSource.getConnection()
我们可以看其中的连接就是我们的con.mysql.cj.jdbc.ConnectionImpl
@SpringBootTest
class VueApplicationTests {
@Autowired
DataSource dataSource;
@Test
void contextLoads() throws SQLException {
System.out.println(dataSource.getClass());
System.out.println(dataSource.getConnection());
}
}
测试:最后跑一下我们的url看是否能够拿到数据
程序展示: