飞道的博客

spring boot 应用mybatis

511人阅读  评论(0)

Mybatis入门:

Mybatis入门_做测试的喵酱的博客-CSDN博客

 

目录

一、spring boot 应用mybatis 核心

二、举例:

2.1 背景

2.2 项目结构:

 2.3 依赖包 pom

2.4 项目配置文件application.yml

2.5 实例层entity

2.6 mybatis的mapper层

2.7 spring boot service 层

2.8 controller层

2.9 应用启动层StudentmybatisspringApplication

三、数据库字段名称与java实体类字段名称不一致 


一、spring boot 应用mybatis 核心

spring boot 应用mybatis 核心,就是把mybatis 的mapper 通过spring注入实例。

二、举例:

2.1 背景

实现一个查询的接口,返回结果为多个实例的集合。

select * from MyStudent where name = #{name}

2.2 项目结构:

相对于单纯的mybatis 使用,spring boot 应用mybatis 缺少了mybatis 的总配置文件。

 2.3 依赖包 pom


  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation= "http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0 </modelVersion>
  5. <parent>
  6. <groupId>org.springframework.boot </groupId>
  7. <artifactId>spring-boot-starter-parent </artifactId>
  8. <version>2.4.4 </version>
  9. <relativePath/> <!-- lookup parent from repository -->
  10. </parent>
  11. <groupId>com.example </groupId>
  12. <artifactId>studentmybatisspring </artifactId>
  13. <version>0.0.1-SNAPSHOT </version>
  14. <name>studentmybatisspring </name>
  15. <description>Demo project for Spring Boot </description>
  16. <properties>
  17. <java.version>1.8 </java.version>
  18. </properties>
  19. <dependencies>
  20. <dependency>
  21. <groupId>org.springframework.boot </groupId>
  22. <artifactId>spring-boot-starter-web </artifactId>
  23. </dependency>
  24. <dependency>
  25. <groupId>org.springframework.boot </groupId>
  26. <artifactId>spring-boot-starter-test </artifactId>
  27. <scope>test </scope>
  28. </dependency>
  29. <dependency>
  30. <groupId>org.projectlombok </groupId>
  31. <artifactId>lombok </artifactId>
  32. </dependency>
  33. <dependency>
  34. <groupId>mysql </groupId>
  35. <artifactId>mysql-connector-java </artifactId>
  36. <version>8.0.20 </version>
  37. </dependency>
  38. <dependency>
  39. <groupId>org.mybatis.spring.boot </groupId>
  40. <artifactId>mybatis-spring-boot-starter </artifactId>
  41. <version>2.1.4 </version>
  42. </dependency>
  43. </dependencies>
  44. <build>
  45. <plugins>
  46. <plugin>
  47. <groupId>org.springframework.boot </groupId>
  48. <artifactId>spring-boot-maven-plugin </artifactId>
  49. </plugin>
  50. </plugins>
  51. </build>
  52. </project>

2.4 项目配置文件application.yml

application.yml


  
  1. server:
  2. port: 8080
  3. spring:
  4. datasource:
  5. url: jdbc: mysql:/ /124.70.87.136:3306/chen?useUnicode= true&characterEncoding=UTF- 8
  6. username: root
  7. password: 123456
  8. driver- class-name: com.mysql.cj.jdbc.Driver
  9. logging:
  10. level:
  11. com.example.studentmybatisspring. mapper: debug

里面包含项目端口信息

数据库连接信息

以及开启查看执行sql的日志。

这里设置查看日志,我们一般只设置查看对应包的日志。这里是想要查看的包名。

这个mapper就是我们mabits里面的mapper。

当我们启动项目,触发相应的sql时,就会显示对应的sql日志。

2.5 实例层entity

存放的是我们需要的实例。

ResultMsg,我们用来封装接口的返回结果。


  
  1. package com.example.studentmybatisspring.entity;
  2. import lombok.AllArgsConstructor;
  3. import lombok.Data;
  4. import lombok.NoArgsConstructor;
  5. @Data
  6. @NoArgsConstructor
  7. @AllArgsConstructor
  8. public class ResultMsg<T> {
  9. public static final String SUCCESS_NO = "200";
  10. public static final String SUCCESS_SUCCESS = "success";
  11. private String no;
  12. private String msg;
  13. private T data;
  14. public ResultMsg (String no, String msg) {
  15. this.no = no;
  16. this.msg = msg;
  17. }
  18. public static <T> ResultMsg<T> success (T data){
  19. return new ResultMsg(SUCCESS_NO,SUCCESS_SUCCESS,data);
  20. }
  21. public static <T> ResultMsg<T> error (String no,String msg){
  22. return new ResultMsg(no,msg);
  23. }
  24. }

MyStudent,是数据库里MyStudent表对应的实例。

数据库的表:

 对应表的实例MyStudent


  
  1. package com.example.studentmybatisspring.entity;
  2. import lombok.AllArgsConstructor;
  3. import lombok.Data;
  4. import lombok.NoArgsConstructor;
  5. @Data
  6. @NoArgsConstructor
  7. @AllArgsConstructor
  8. public class MyStudent {
  9. private long id;
  10. private String name;
  11. private int age;
  12. public MyStudent (String name, int age) {
  13. this.name = name;
  14. this.age = age;
  15. }
  16. public MyStudent (String name) {
  17. this.name = name;
  18. }
  19. }

2.6 mybatis的mapper层

接口:MyStudentMapper


  
  1. package com.example.studentmybatisspring.mapper;
  2. import com.example.studentmybatisspring.entity.MyStudent;
  3. import org.apache.ibatis.annotations.Select;
  4. import org.springframework.stereotype.Repository;
  5. import java.util.List;
  6. @Repository
  7. public interface MyStudentMapper {
  8. @Select("select * from MyStudent where name = #{name}")
  9. List<MyStudent> findByName (String name);
  10. }

接口:MyStudentMapper中,包含sql语句,以及sql语句对应的方法。

2.7 spring boot service 层

service接口


  
  1. package com.example.studentmybatisspring.service;
  2. import com.example.studentmybatisspring.entity.MyStudent;
  3. import java.util.List;
  4. public interface MyStudentService {
  5. List<MyStudent> findByName (String name);
  6. }

service实现类


  
  1. package com.example.studentmybatisspring.service.impl;
  2. import com.example.studentmybatisspring.entity.MyStudent;
  3. import com.example.studentmybatisspring.mapper.MyStudentMapper;
  4. import com.example.studentmybatisspring.service.MyStudentService;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Service;
  7. import java.util.List;
  8. @Service
  9. public class MyStudentServiceImpl implements MyStudentService {
  10. @Autowired
  11. private MyStudentMapper myStudentMapper;
  12. @Override
  13. public List<MyStudent> findByName (String name) {
  14. return myStudentMapper.findByName(name);
  15. }
  16. }

我们在spring boot service 实现类中,注入了mybatis 的 mapper接口。

2.8 controller层

MyStudentController


  
  1. package com.example.studentmybatisspring.controller;
  2. import com.example.studentmybatisspring.entity.MyStudent;
  3. import com.example.studentmybatisspring.entity.ResultMsg;
  4. import com.example.studentmybatisspring.service.MyStudentService;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.bind.annotation.RestController;
  8. import java.util.List;
  9. @RestController
  10. @RequestMapping("/chen")
  11. public class MyStudentController {
  12. @Autowired
  13. private MyStudentService myStudentService;
  14. @RequestMapping("/findByName")
  15. public ResultMsg<List<MyStudent>> findByName (String name){
  16. List<MyStudent> byName = myStudentService.findByName(name);
  17. return ResultMsg.success(byName);
  18. }
  19. }

2.9 应用启动层StudentmybatisspringApplication

我们需要在项目启动层,增加mapper的扫描。

相对于单纯的mybatis 使用,spring boot 应用mybatis 缺少了mybatis 的总配置文件。

这里填写包名。@MapperScan(basePackages = 


  
  1. package com.example.studentmybatisspring;
  2. import org.mybatis.spring.annotation.MapperScan;
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. @SpringBootApplication
  6. @MapperScan(basePackages = "com.example.studentmybatisspring.mapper")
  7. public class StudentmybatisspringApplication {
  8. public static void main (String[] args) {
  9. SpringApplication.run(StudentmybatisspringApplication.class, args);
  10. }
  11. }

在浏览器里访问:

在控制台显示sql日志

 

三、数据库字段名称与java实体类字段名称不一致 

同一个表,数据库的字段名称,与java实体类字段名称不一致。

如数据库中,字段名称为user_id

但是在java项目中,实体类的名称为驼峰格式,userId。

我们需要在application.yml,开启驼峰命名的映射。

 

 

 


转载:https://blog.csdn.net/qq_39208536/article/details/128167464
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场