Springboot整合mybatis框架(含例項Demo)
最近要交一份project專案作業,前後端分離,我負責後端,選用了Springboot+mybatis進行整合操作。
一.前期準備:
開發使用的IDE為IntelliJ IDEA:https://www.jetbrains.com/idea/
maven倉庫整合jar包:http://mvnrepository.com/artifact/org.apache.maven/maven-plugin-api/3.5.3
下完上述兩樣後,IDEA安裝略,我們開始使用IDEA配置預設的maven庫
從GIF中可以看到,我們點選configure選單項下的Project Defaults來設定專案的預設配置,從settings選項中,找到Maven庫一欄,選擇我們剛才下載好的maven倉庫的安裝目錄。
建立好我們的資料表。資料庫名為jiguo,表名為jiguo_user。
以上,前期準備就準備好啦。
二.專案結構一欄以及實現步驟。
實現步驟:
1.Springboot專案建立
2.在pom.xml中,使用maven架包匯入mybatis依賴dependency
3.逆向工程,配置自己的generatorConfig逆向工程的配置檔案,然後使用maven外掛執行出來,逆向出DAO層還有Model層
4.在application.properties中,配置我們的資料來源 mybatis所需要的配置
5.MyMapper介面的建立
6.service層程式碼的建立
7.建立controller,處理前端的請求。
8.啟動檔案中設定DAO層掃描,這樣就能識別出DAO層註解
@MapperScan(basePackages = "com.example.sl.xxxxx.dao")
步驟一:Springboot專案建立
完成建立一個名為demospringboot的專案
步驟二:在pom.xml中,使用maven架包匯入mybatis等依賴
pom.xml:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example.sl</groupId>
<artifactId>demospringboot</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>demospringboot</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!--alibaba-start-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.1.9</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
<!--alibaba-end-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>
<!--mybatis-start-->
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.1</version>
</dependency>
<!--generator-->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
<!--mapper-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>1.2.4</version>
</dependency>
<!--pagehelper-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
<!--mybatis-end-->
<!-- 引入 redis 依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.29</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.0.0</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
import以後,我們匯入了mybatis,mysql,阿里巴巴的sql檢測外掛,分頁外掛等。
步驟三:逆向工程,配置自己的generatorConfig(resource包下)逆向工程的配置檔案,然後使用maven外掛執行出來,逆向出DAO層還有Model層
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<!--1.jdbcConnection設定資料庫連線-->
<!--2.javaModelGenerator設定類的生成位置-->
<!--3.sqlMapGenerator設定生成xml的位置-->
<!--4.javaClientGenerator設定生成dao層介面的位置-->
<!--5.table設定要進行逆向工程的表名以及要生成的實體類的名稱-->
<context id="default" targetRuntime="MyBatis3Simple" defaultModelType="flat">
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<plugin type="tk.mybatis.mapper.generator.MapperPlugin">
<property name="mappers" value="com.example.sl.demospringboot.util.MyMapper"/>
</plugin>
<!-- optional,旨在建立class時,對註釋進行控制 -->
<commentGenerator>
<property name="suppressDate" value="true"/>
<property name="suppressAllComments" value="true"/>
</commentGenerator>
<!--jdbc的資料庫連線 -->
<jdbcConnection
driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/jiguo?characterEncoding=utf-8"
userId="root"
password="root">
</jdbcConnection>
<!-- 非必需,型別處理器,在資料庫型別和java型別之間的轉換控制-->
<javaTypeResolver>
<property name="forceBigDecimals" value="false"/>
</javaTypeResolver>
<!-- Model模型生成器,用來生成含有主鍵key的類,記錄類 以及查詢Example類
targetPackage 指定生成的model生成所在的包名
targetProject 指定在該專案下所在的路徑
-->
<!--<javaModelGenerator targetPackage="com.mmall.pojo" targetProject=".\src\main\java">-->
<javaModelGenerator targetPackage="com.example.sl.demospringboot.model" targetProject="./src/main/java">
<!-- 是否允許子包,即targetPackage.schemaName.tableName -->
<property name="enableSubPackages" value="false"/>
<!-- 是否對model新增 建構函式 -->
<property name="constructorBased" value="false"/>
<!-- 是否對類CHAR型別的列的資料進行trim操作 -->
<property name="trimStrings" value="true"/>
<!-- 建立的Model物件是否 不可改變 即生成的Model物件不會有 setter方法,只有構造方法 -->
<property name="immutable" value="false"/>
</javaModelGenerator>
<!--mapper對映檔案生成所在的目錄 為每一個資料庫的表生成對應的SqlMap檔案 -->
<!--<sqlMapGenerator targetPackage="mappers" targetProject=".\src\main\resources">-->
<sqlMapGenerator targetPackage="mappers" targetProject="./src/main/resources">
<property name="enableSubPackages" value="false"/>
</sqlMapGenerator>
<!-- 客戶端程式碼,生成易於使用的針對Model物件和XML配置檔案 的程式碼
type="ANNOTATEDMAPPER",生成Java Model 和基於註解的Mapper物件
type="MIXEDMAPPER",生成基於註解的Java Model 和相應的Mapper物件
type="XMLMAPPER",生成SQLMap XML檔案和獨立的Mapper介面
-->
<!-- targetPackage:mapper介面dao生成的位置 -->
<!--<javaClientGenerator type="XMLMAPPER" targetPackage="com.mmall.dao" targetProject=".\src\main\java">-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.example.sl.demospringboot.dao" targetProject="./src/main/java">
<!-- enableSubPackages:是否讓schema作為包的字尾 -->
<property name="enableSubPackages" value="false" />
</javaClientGenerator>
<table tableName="jiguo_user" domainObjectName="User" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>
<!-- geelynote mybatis外掛的搭建 -->
</context>
</generatorConfiguration>
然後執行我們的mybatis外掛
就發現我們的DAO層和model層已經建立好了。對應jiguo資料庫中的
jiguo_user表。
四。在application.properties中,配置我們的資料來源 mybatis所需要的配置
server.port=8080//伺服器的埠號
#mysql連結配置
spring.datasource.url=jdbc:mysql://localhost:3306/jiguo
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.durid.initialsize=1
#mybatis配置
#首先是實體類所在的包的名字
mybatis.type-aliases-package=com.example.sl.demospringboot.model
mybatis.mapper-locations=classpath:mappers/*.xml
#mybatis使用resources的xml來對映資料庫表,這裡就是resources下的mappers包的所有xml檔案
#MyMapper是繼承了一些封裝好的方法介面 CRUD
#mapper
#mappers 多個介面時逗號隔開 通配mappers
mapper.mappers=com.example.sl.demospringboot.util.MyMapper
mapper.not-empty=false
mapper.identity=MYSQL
#pagehelper 分頁外掛
pagehelper.helperDialect=mysql
pagehelper.reasonable=true
pagehelper.supportMethodsArguments=true
pagehelper.params=count=countSql
配置了伺服器埠號,資料庫的連結資料,以及mybatis的對映表關係,我們發現有一個MyMapper介面,是我們之前沒建立的,這是一個通配mappers(封裝了一些常用CRUD操作,可以通過實現介面來進行),在maven庫中新增依賴的時候,我們已經新增了相關介面的庫tk.mybatis。
所以我們執行步驟五。
五.MyMapper介面的建立
util包下,建立MyMapper介面:
MyMapper:
package com.example.sl.demospringboot.util;
import tk.mybatis.mapper.common.Mapper;
import tk.mybatis.mapper.common.MySqlMapper;
//自定義介面整合大牛給我們寫好的資料層的介面類
public interface MyMapper<T> extends Mapper<T>,MySqlMapper<T> {
}
然後在DAO層繼承這個介面。
UserMapper:
package com.example.sl.demospringboot.dao;
import com.example.sl.demospringboot.model.User;
import com.example.sl.demospringboot.util.MyMapper;
public interface UserMapper extends MyMapper<User> {
}
以上我們完成了DAO層和資料庫的準備,然後我們開發我們的service層,業務層。
六.service層程式碼的建立
我們將UserMapper使用註解的方式,生成,減少記憶體消耗,再呼叫之前別人寫好的介面方法,進行CRUD操作(自己定製的CRUD操作暫略)。
UserService:
package com.example.sl.demospringboot.service;
import com.example.sl.demospringboot.model.User;
import java.util.List;
public interface UserService {
public List<User> findAll();
}
UserServiceImpl:
package com.example.sl.demospringboot.service;
import com.example.sl.demospringboot.dao.UserMapper;
import com.example.sl.demospringboot.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service("userService")
public class UserServiceImpl implements UserService{
@Autowired
private UserMapper userMapper;
@Override
public List<User> findAll() {
return userMapper.selectAll();
}
}
七.建立controller,處理前端的請求
UserController:
package com.example.sl.demospringboot.controller;
import com.example.sl.demospringboot.model.User;
import com.example.sl.demospringboot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping(value = "/user")
public class UserController {
@Autowired
private UserService userService;
@RequestMapping("/findAll")
public List<User> findAllUser(){
List<User> userlist=userService.findAll();
return userlist;
}
}
八..啟動檔案中設定DAO層掃描,這樣就能識別出DAO層註解
@MapperScan(basePackages = "com.example.sl.xxxxx.dao")
package com.example.sl.demospringboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;
@SpringBootApplication
@MapperScan(basePackages = "com.example.sl.demospringboot.dao")//這個註解注意一下 放DAO層的包名 對這個包下進行注入
public class DemospringbootApplication {
public static void main(String[] args) {
SpringApplication.run(DemospringbootApplication.class, args);
}
}
儲存~後臺完成
三.自定義一個login.html進行請求測試。(由於JS要跨域,這裡不進行ajax請求了 這裡我們直接使用表單 PS:本地可以將一個ajax請求的頁面放在本地Apache容器中來解決)
login.html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>login.html</title>
</head>
<body>
<form action="/user/findAll">
<input type="submit" value="login">
</form>
</body>
</html>
然後執行~
測試完成~終於可以睡覺啦
以上demo收錄在Ricardo-L-Song的github
喜歡就給個小??吧,你的支援是對博主最大的支援。
相關文章
- springboot整合mybatis自動生成框架Spring BootMyBatis框架
- springBoot 整合 mybatisSpring BootMyBatis
- Springboot整合MybatisSpring BootMyBatis
- Springboot+mybatis 整合Spring BootMyBatis
- springboot+mybatis整合Spring BootMyBatis
- SpringBoot | 3.2 整合MyBatisSpring BootMyBatis
- SpringBoot+Dubbo的註解方式整合例項Spring Boot
- SpringBoot整合MyBatis-Plus框架(程式碼生成器)Spring BootMyBatis框架
- SSM 框架快速整合例項--學生查詢SSM框架
- SpringBoot整合系列–整合MyBatis-plusSpring BootMyBatis
- SpringBoot整合Mybatis+DruidSpring BootMyBatisUI
- springBoot 整合 mybatis+OracleSpring BootMyBatisOracle
- springboot-整合mybatis,securitySpring BootMyBatis
- SpringBoot整合Mybatis-PlusSpring BootMyBatis
- springboot專案整合mybatisSpring BootMyBatis
- 企業 SpringBoot 教程(六)springboot整合mybatisSpring BootMyBatis
- SpringBoot整合Mybatis-Plus(SpringBoot3)Spring BootMyBatis
- 【Spring Boot架構】整合Mybatis-Plus的例項詳解Spring Boot架構MyBatis
- Mybatis 的使用(整合Spring、SpringBoot)MyBatisSpring Boot
- SpringBoot學習之整合MybatisSpring BootMyBatis
- SpringBoot、MyBatis、Shiro、Thymeleaf整合思路Spring BootMyBatis
- SpringBoot 實戰 (九) | 整合 MybatisSpring BootMyBatis
- SpringBoot | 3.3 整合MyBatis-PlusSpring BootMyBatis
- springboot整合mybatis及其反向工程Spring BootMyBatis
- SpringBoot 2.1.1.RELEASE 整合MyBatisSpring BootMyBatis
- SpringBoot資料訪問(一) SpringBoot整合MybatisSpring BootMyBatis
- 【springboot】學習4:整合JDBC、整合druid、整合mybatis、整合 SpringSecuritySpring BootJDBCUIMyBatisGse
- SpringBoot第五篇:整合MybatisSpring BootMyBatis
- SpringBoot整合Mybatis超詳細流程Spring BootMyBatis
- Spring+SpringMVC+MyBatis框架整合SpringMVCMyBatis框架
- springboot整合mybatis增刪改查(三):mybatis逆向工程Spring BootMyBatis
- SpringBoot+Dubbo+Zookeeper 例項Spring Boot
- SpringBoot2.0應用(五):SpringBoot2.0整合MyBatisSpring BootMyBatis
- 基於 SpringBoot2.0+優雅整合 SpringBoot+MybatisSpring BootMyBatis
- 基於SpringBoot2.0+優雅整合SpringBoot+MybatisSpring BootMyBatis
- Spring Boot 整合 FreeMarker 例項Spring Boot
- 最簡單的SpringBoot整合MyBatis教程Spring BootMyBatis
- SpringBoot 實戰 (十三) | 整合 MyBatis (XML 版)Spring BootMyBatisXML