MyBatis 是一款優秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎全部的 JDBC 代碼以及設置參數和獲取結果集的工做。MyBatis 能夠經過簡單的 XML 或註解來配置和映射原始類型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 對象)爲數據庫中的記錄。java
2.1 引入maven座標mysql
<!--springboot父工程--> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.2.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <dependencies> <!--springboot框架web組件--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <version>2.2.2.RELEASE</version> </dependency> <!--mybatis整合springboot組件--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.0</version> </dependency> <!--mysql數據庫鏈接驅動--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.18</version> </dependency> <!--lombok組件--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.10</version> </dependency> </dependencies> <build> <!--springboot的maven插件--> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <compilerArgs> <arg>-parameters</arg> </compilerArgs> </configuration> </plugin> </plugins> </build>
2.2 編寫代碼git
2.2.1 建立如圖所示的目錄結構github
記得兩個mapper文件的路徑要一致,在編譯以後mybatis的映射文件和接口文件纔會在同一個目錄下。web
2.2.2 代碼編寫spring
2.2.2.1 建立配置文件和啓動類sql
application.yml
:數據庫
butterflytri: databaseurl-port: 127.0.0.1:3306 # 數據庫端口 database-name: student_db # 數據庫名 server: port: 8080 # 應用端口 servlet: context-path: /butterflytri # 應用映射 spring: application: name: mybatis # 應用名稱 datasource: url: jdbc:mysql://${butterflytri.databaseurl-port}/${butterflytri.database-name}?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC driver-class-name: com.mysql.jdbc.Driver username: root password: root mybatis: type-aliases-package: org.wjf.entity # entity別名 mapper-locations: classpath:org/wjf/mapper/*Mapper.xml # mapper映射包掃描
啓動類MybatisApplication.java
:apache
package org.butterflytri; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @author: WJF * @date: 2020/5/16 * @description: MybatisApplication */ @SpringBootApplication public class MybatisApplication { public static void main(String[] args) { SpringApplication.run(MybatisApplication.class,args); } }
2.2.2.2 建立實體類Studentspringboot
在entity包下建立Student.java
實體類。
package org.butterflytri.entity; import lombok.Getter; import lombok.Setter; import lombok.ToString; import java.io.Serializable; /** * @author: WJF * @date: 2020/5/16 * @description: Student */ @ToString @Getter @Setter public class Student implements Serializable { private Long id; private String studentName; private String studentNo; private String sex; private Integer age; }
2.2.2.3 編寫mybatis接口文件
在mapper包下建立StudentMapper.java
接口。
package org.butterflytri.mapper; import org.apache.ibatis.annotations.Mapper; import org.butterflytri.entity.Student; import java.util.List; /** * @author: WJF * @date: 2020/5/16 * @description: */ @Mapper public interface StudentMapper { /** * 查詢全部學生信息 * @return List<Student> */ List<Student> findAll(); /** * 經過id查詢學生信息 * @param id * @return Student */ Student findOne(Long id); /** * 經過學號查詢學生信息 * @param studentNo * @return Student */ Student findByStudentNo(String studentNo); }
2.2.2.4 建立mybatis映射文件
在mapper包下建立StudentMapper.xml
。
<?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="org.butterflytri.mapper.StudentMapper"> <sql id="propertyMapper"> `ID` AS id, `STUDENT_NAME` AS studentName, `STUDENT_NO` AS studentNo, `SEX` AS sex, `AGE` AS age </sql> <select id="findAll" resultType="org.butterflytri.entity.Student"> SELECT <include refid="propertyMapper"></include> FROM `t_student` </select> <select id="findOne" parameterType="java.lang.Long" resultType="org.butterflytri.entity.Student"> SELECT <include refid="propertyMapper"></include> FROM `t_student` WHERE `ID` = #{id} </select> <select id="findByStudentNo" parameterType="java.lang.String" resultType="org.butterflytri.entity.Student"> SELECT <include refid="propertyMapper"></include> FROM `t_student` WHERE `STUDENT_NO` = #{studentNo} </select> </mapper>
2.2.2.5 Service層
在service包下建立StudentService.java
接口,在impl包下建立StudentServiceImpl.Java
類並繼承StudentService.Java
接口。
StudentService.java
:
package org.butterflytri.service; import org.butterflytri.entity.Student; import java.util.List; /** * @author: WJF * @date: 2020/5/16 * @description: StudentService */ public interface StudentService { public List<Student> findAll(); public Student findOne(Long id); public Student findByStudentNo(String studentNo); }
StudentServiceImpl.java
:
package org.butterflytri.service.impl; import org.butterflytri.entity.Student; import org.butterflytri.mapper.StudentMapper; import org.butterflytri.service.StudentService; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.List; /** * @author: WJF * @date: 2020/5/16 * @description: StudentServiceImpl */ @Service public class StudentServiceImpl implements StudentService { @Resource private StudentMapper studentMapper; @Override public List<Student> findAll() { return studentMapper.findAll(); } @Override public Student findOne(Long id) { return studentMapper.findOne(id); } @Override public Student findByStudentNo(String studentNo) { return studentMapper.findByStudentNo(studentNo); } }
2.2.2.6 Controller層
在controller包下建立StudentController.java
控制器類。
package org.butterflytri.controller; import org.butterflytri.entity.Student; import org.butterflytri.service.StudentService; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import javax.annotation.Resource; import java.util.List; /** * @author: WJF * @date: 2020/5/16 * @description: StudentController */ @RestController @RequestMapping("/student") public class StudentController { @Resource private StudentService studentService; @RequestMapping("/findAll") public List<Student> findAll() { return studentService.findAll(); } @RequestMapping("/findOne") public Student findOne(Long id) { return studentService.findOne(id); } @RequestMapping("/findByStudentNo") public Student findByStudentNo(String studentNo) { return studentService.findByStudentNo(studentNo); } }
2.2.2.7 啓動工程,訪問路徑
啓動工程,訪問三個接口:
findAll
:
findOne
:
findByStudentNo
:
本項目傳送門:spring-boot-mybatis
此教程會一直更新下去,以爲博主寫的能夠的話,關注一下,也能夠更方便下次來學習。