1.SpringBoot 高級用法
1.1 為屬性賦值操作
1.1.1 業務需求說明
說明: 當程式中出現了頻繁變化的資料時,如果采用人為的方式進行修改并且變異打包則導致代碼的耦合性較高.不便于維護.所以能否為屬性動態賦值.

1.1.2 關于YML檔案說明
# YML檔案語法
# 1. key:(空格) value
# 2. key與key之間有層級的縮進關系.
server:
port: 8090
# 屬性賦值操作,編輯屬性時注意前綴. 只要springboot啟動該資料就會被寫入記憶體中 key-value格式
redis:
host: 192.168.126.130
port: 6379
1.1.3 為屬性賦值操作
//動態獲取ip和埠資料
//@ResponseBody 作用1: 將物件轉化為JSON 作用2: 如果回傳值是String型別,則回傳字串本身
// 作用3: 一般客戶端發起ajax請求時,采用該注解回傳資料, 將不會執行視圖決議器操作
@RestController
public class RedisController {
@Value("${redis.host}") //spel運算式
private String host; // = "192.168.126.130"; private String host; // = "192.168.126.130";
@Value("${redis.port}")
private Integer port; // = 6379;
@RequestMapping("/getMsg")
public String getMsg(){
return host + ":" + port;
}
}
1.2 指定組態檔為屬性賦值
說明: 由于YML組態檔中的資料一般都是系統級別的資料,所以一般的業務資料都會寫到properties的組態檔中.
1.2.1 編輯properties組態檔

1.2.2 編輯RedisController
package com.jt.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//動態獲取ip和埠資料
//@ResponseBody 作用1: 將物件轉化為JSON 作用2: 如果回傳值是String型別,則回傳字串本身
// 作用3: 一般客戶端發起ajax請求時,采用該注解回傳資料, 將不會執行視圖決議器操作
@RestController
//動態的匯入pro組態檔,交給spring容器進行加載.
@PropertySource("classpath:/properties/redis.properties")
public class RedisController {
@Value("${redis.host}") //spel運算式
private String host; // = "192.168.126.130"; private String host; // = "192.168.126.130";
@Value("${redis.port}")
private Integer port; // = 6379;
@Value("${pro.redis.host}")
private String proHost;
@Value("${pro.redis.port}")
private Integer proPort;
//指定properties檔案進行賦值操作.
@RequestMapping("/getMsg")
public String getMsg(){
//從yml組態檔中動態獲取
return host + ":" + port;
}
@RequestMapping("/getPro")
public String getPro(){
return proHost + ":" + proPort;
}
}
1.3 環境切換
業務說明:由于開發時都是鏈接公司自己的資料庫/服務器等.把這個環境稱之為"開發環境."
當開發完成之后需要進行上線部署,則需要鏈接"生產環境"
如果頻繁的切換環境,則導致專案由于修改錯誤,導致問題的發生.
專案優化: 能否提供一種策略.簡化上述操作的開發程序.
#第一份組態檔,用來指定默認的環境標識
spring:
profiles:
active: prod
---
# YML檔案語法
# 1. key:(空格) value
# 2. key與key之間有層級的縮進關系.
#指定環境的名稱
spring:
profiles: dev
server:
port: 8090
# 屬性賦值操作,編輯屬性時注意前綴. 只要springboot啟動該資料就會被寫入記憶體中 key-value格式
redis:
host: 192.168.126.129
port: 6379
# 1.需要將環境一分為二
---
spring:
profiles: prod
server:
port: 9000
# 屬性賦值操作,編輯屬性時注意前綴. 只要springboot啟動該資料就會被寫入記憶體中 key-value格式
redis:
host: 111.111.111.111
port: 7000
1.4 關于lombok說明
1.4.1 添加jar包
<!--引入插件lombok 自動的set/get/構造方法插件 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
1.4.2 lombok案例

1.4.3 問題
說明:如果需要使用lombok工具就必須提前安裝插件.如果在上線的時候Linux系統中,是否需要提前安裝lombok插件?? 不需要安裝.

原因: lombok插件在編譯器有效. 將.java檔案編譯為.class檔案時lombok會動態的添加get/set/toString…等方法.添加到.class檔案中.
Linux上線部署時運行的時.jar檔案 .jar包含的檔案(.class檔案)
1.4.4 知識小結
1.SpringBoot 開箱即用原理;
2.屬性賦值的操作 @Value("${}")
3.動態匯入資源檔案 @PropertySource(“classpath:/properties/redis.properties”)
4.環境的切換 —, spring.profiles: dev ,默認的選項
5.lombok常用操作
2.SpringBoot整合Mybatis
2.1 新建專案

暫時只需要勾選webjar包即可
2.2 匯入jt.sql的資料庫
2.2.1 準備資料庫工具

2.2.2 鏈接資料庫


2.2.3 添加jar包檔案
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.jt</groupId>
<artifactId>springboot_demo2_mybatis</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot_demo2_mybatis</name>
<description>Demo project for Spring Boot</description>
<properties>
<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>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--引入插件lombok 自動的set/get/構造方法插件 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--引入資料庫驅動 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--springBoot資料庫連接 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--spring整合mybatis 暫時 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2.2.4 編輯POJO物件
@Data
@Accessors(chain = true)
public class User implements Serializable {
private Integer Id;
private String name;
private Integer age;
private String sex;
}
2.2.5 編輯UserDao介面
@Mapper //將介面交給Spring管理
public interface UserDao {
//查詢user表的所有的記錄
@Select("select * from user")
List<User> findAll();
}
2.2.6 編輯測驗類
package com.jt;
import com.jt.dao.UserDao;
import com.jt.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
class SpringbootDemo2MybatisApplicationTests {
@Autowired
private UserDao userDao;
@Test
public void testFind(){
List<User> userList = userDao.findAll();
System.out.println(userList);
}
}
2.3 關于YML檔案配置資訊
2.3.1 關于資料庫url說明
1.時區設定
serverTimezone=GMT%2B8 %2B= +號
2.編碼格式設定
useUnicode=true&characterEncoding=utf8
3.是否自動的重新鏈接
autoReconnect=true
4.是否允許批量操作
allowMultiQueries=true
2.3.2 關于Mybatis配置說明
mybatis:
#定義別名包
type-aliases-package: com.jt.pojo 可以簡化mapper映射檔案的編輯
#加載user標簽的mapper檔案
mapper-locations: classpath:/mybatis/mappers/*.xml
#開啟駝峰映射
configuration:
map-underscore-to-camel-case: true
<!--
前提: Mybatis進行映射時必須滿足屬性名稱一致
業務說明:
表: user_id user_name
物件: userId userName
解決方案: 開啟mybatis駝峰規則映射
原理:
欄位名稱user_id~~~去除"_"線~~~userid
~~~~首字母大寫userId~~~~~屬性userId
只要名稱一致,則可以自動映射.
注意事項: 如果開啟駝峰規則,則必須滿足要求.
問: 物件的屬性user_id 與欄位user_id能否映射? 不能映射
-->
2.3.3 關于Mapper注解優化說明
由于每個介面都需要添加Mapper注解導致代碼繁瑣.可以采用包掃描的方式動態匯入 代碼如下
@SpringBootApplication
@MapperScan("com.jt.dao") //主要告訴mapper的包路徑,會自動的完成包掃描
public class SpringbootDemo2MybatisApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootDemo2MybatisApplication.class, args);
}
}
3 Mybatis-plus介紹
3.1 ORM
物件關系映射(英語:Object Relational Mapping,簡稱ORM,或O/RM,或O/R mapping),是一種程式設計技術,用于實作面向物件編程語言里不同型別系統的資料之間的轉換,從效果上說,它其實是創建了一個可在編程語言里使用的“虛擬物件資料庫”,如今已有很多免費和付費的ORM產品,而有些程式員更傾向于創建自己的ORM工具,
實質: 物件與資料庫中表完成映射
分析:
1. 物件與表一一映射.
2. 物件中的屬性與表中的欄位一一映射.
實質: 以物件的方式操作資料庫.
說明 : Mybatis滿足ORM物件映射的要求,但是Mybatis是一種半自動化的ORM映射框架
案例1: Mybatis進行資料庫查詢時,是否可以直接轉化為物件,供用戶使用呢 true 表與物件完成映射.
案例2: Mybatis在進行資料庫更新操作時,能否利用物件直接操作呢??? false 不可以.需要自己手寫sql.
3.2 MP介紹
MyBatis-Plus(簡稱 MP)是一個 MyBatis 的增強工具,在 MyBatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生,
3.3 MP特性
無侵入:只做增強不做改變,引入它不會對現有工程產生影響,如絲般順滑
損耗小:啟動即會自動注入基本 CURD,性能基本無損耗,直接面向物件操作
強大的 CRUD 操作:內置通用 Mapper、通用 Service,僅僅通過少量配置即可實作單表大部分 CRUD 操作,更有強大的條件構造器,滿足各類使用需求
支持 Lambda 形式呼叫:通過 Lambda 運算式,方便的撰寫各類查詢條件,無需再擔心欄位寫錯
支持主鍵自動生成:支持多達 4 種主鍵策略(內含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解決主鍵問題
支持 ActiveRecord 模式:支持 ActiveRecord 形式呼叫,物體類只需繼承 Model 類即可進行強大的 CRUD 操作
支持自定義全域通用操作:支持全域通用方法注入( Write once, use anywhere )
內置代碼生成器:采用代碼或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 層代碼,支持模板引擎,更有超多自定義配置等您來使用
內置分頁插件:基于 MyBatis 物理分頁,開發者無需關心具體操作,配置好插件之后,寫分頁等同于普通 List 查詢
分頁插件支持多種資料庫:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多種資料庫
內置性能分析插件:可輸出 Sql 陳述句以及其執行時間,建議開發測驗時啟用該功能,能快速揪出慢查詢
內置全域攔截插件:提供全表 delete 、 update 操作智能分析阻斷,也可自定義攔截規則,預防誤操作
3.4 MP入門案例
3.4.1 引入jar包
<!--spring整合mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
3.4.2 編輯POJO物件
@Data
@Accessors(chain = true)
@TableName //("user") //1.將物件與表 進行一對一關聯
public class User implements Serializable {
@TableId(type = IdType.AUTO) //主鍵的資訊 設定自增
private Integer Id;
//@TableField(value = "name") //如果欄位名稱與屬性的名稱一致(包含駝峰規則),可以省略不寫
private String name;
private Integer age;
private String sex;
}
3.4.3 編輯Mapper介面

3.4.4修改YML映射檔案

3.4.5 入門案例測驗
@Test
public void testSelect01(){
List<User> userList = userDao.selectList(null);
System.out.println(userList);
}
3.5 MP實作原理
3.5.1 物件與表如何映射
可以利用自定義的注解的方式實作映射. @TableName 不能省略 @TableField(“name”)如果名稱一致可以省略
1.物件的名稱與表的名稱 一一映射.
2.物件中的屬性與表中的欄位一一映射.
3.5.2 利用介面封裝公共的CURD方法
MP主要的目的是實作單表的CRUD操作.所以將公共的方法寫到同一個介面中 BaseMapper
以后用戶使用時,只需要繼承即可.

3.5.3 需要將物件動態轉化為SQL
要求:以物件的方式操作資料庫. 需要方法動態轉化為SQL
userMapper.insert(user物件)
Sql: insert into 表名(欄位名稱1,欄位名稱2....) values (屬性值1,屬性值2......)
personMapper.insert(person物件)
Sql: insert into 表名(欄位名稱1,欄位名稱2....) values (屬性值1,屬性值2......)
底層實作時需要動態的拼接Sql即可.
表名: @TableName注解動態獲取
欄位名稱: @TableField(“name”) 獲取
屬性值: 動態利用get方法取值即可.
MP將上述的sql結構進行拼接最終形成可執行的Sql.之后利用Mybatis執行sql操作.之后再次封裝.
3.6 MP API介紹
package com.jt;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.jt.dao.UserDao;
import com.jt.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Arrays;
import java.util.List;
@SpringBootTest
class SpringbootDemo2MybatisApplicationTests {
@Autowired
private UserDao userDao;
@Test
public void testFind(){
List<User> userList = userDao.findAll();
System.out.println(userList);
}
@Test
public void testSelect01(){
List<User> userList = userDao.selectList(null);
System.out.println(userList);
}
/**
* 業務: 查詢id=11的用戶資訊 主鍵...
*/
@Test
public void testSelect02(){
User user = userDao.selectById(11);
System.out.println(user);
}
/**
* 業務: 查詢name屬性為"小喬"的資料
* sql: select * from user where name="小喬";
* 物件的方式 > sql方式
*/
@Test
public void testSelect03(){
//條件構造器
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "小喬");
List<User> userList = userDao.selectList(queryWrapper);
System.out.println(userList);
}
/**
* 業務: 查詢name屬性為"小喬"的資料 并且 age >=18歲
* sql: select * from user where name="小喬" and age>=18;
*
* 大于 > gt| 小于 < lt |
* 大于等于 >= ge | 小于等于 le
*/
@Test
public void testSelect04(){
//條件構造器
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "小喬")
.ge("age", 18);
List<User> userList = userDao.selectList(queryWrapper);
System.out.println(userList);
}
/**
* 業務: 查詢name中包含 "精"的用戶,并且sex為女
* 業務: 查詢name中包含 以精結尾的資料,并且sex為女
* sql: select * from user where name like "%精%" and sex="女";
*/
@Test
public void testSelect05(){
//條件構造器
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.likeLeft("name", "精")
.eq("sex", "女");
List<User> userList = userDao.selectList(queryWrapper);
System.out.println(userList);
}
/**
* 需求: 查詢user表中的資料 要求按照年齡降序排列,如果年齡相同按照id降序排列
*/
@Test
public void testSelect06(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.orderByDesc("age","id");
List<User> userList = userDao.selectList(queryWrapper);
System.out.println(userList);
}
/**
* 需求: 查詢name屬性為null的資料.
* where name is null
*/
@Test
public void testSelect07(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.isNull("name");
List<User> userList = userDao.selectList(queryWrapper);
System.out.println(userList);
}
/**
* 查詢name="小喬" age=17 性別=女的用戶
* 如果傳遞的是物件.會根據物件中不為null的屬性充當where條件.
*/
@Test
public void testSelect08(){
User user = new User();
user.setName("小喬").setAge(17).setSex("女");
QueryWrapper<User> queryWrapper = new QueryWrapper<>(user);
List<User> userList = userDao.selectList(queryWrapper);
System.out.println(userList);
}
/**
* 查詢id=1,3,5,10資料.
* sql: select * from user where id in (1,3,5,10)
*/
@Test
public void testSelect09(){
//轉化時,注意使用物件的型別
Integer[] ids = {1,3,5,10};
List<Integer> idList = Arrays.asList(ids);
List<User> userList = userDao.selectBatchIds(idList);
System.out.println(userList);
}
@Test
public void testInsert(){
User user = new User();
user.setName("特朗普").setAge(70).setSex("男");
userDao.insert(user);
}
/**
* 洗掉name=null的資料,或者name="特朗普"
*/
@Test
public void testDelete(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.isNull("name")
.or()
.eq("name", "特朗普");
userDao.delete(queryWrapper);
}
/**
* 案例1: 將id=1的資料的年齡改為8000歲.
* sql1: update user set age=8000 where id=1;
* 案例2: 要求將name="黑熊精" age=5500.
* sql2: update user set age=5500 where name="黑熊精";
*/
@Test
public void testUpdate(){
User user = new User();
user.setId(1); //主鍵充當where條件
user.setAge(8000);
userDao.updateById(user);
//引數說明 1.物體物件 封裝set條件的值
// 2.更新條件構造器
User temp = new User();
temp.setAge(5500);
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("name", "黑熊精");
userDao.update(temp,updateWrapper);
}
}
4 SpringBoot整合web資源
4.1 創建web專案

4.2 編輯專案目錄結構

4.3 引入jar包檔案
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.jt</groupId>
<artifactId>springboot_demo3_web</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>springboot_demo3_web</name>
<description>Demo project for Spring Boot</description>
<properties>
<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>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--引入插件lombok 自動的set/get/構造方法插件 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--引入資料庫驅動 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<!--springBoot資料庫連接 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!--spring整合mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<!--springBoot整合JSP添加依賴 -->
<!--servlet依賴 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
<!--jstl依賴 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<!--使jsp頁面生效 -->
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4.4 編輯YML組態檔
server:
port: 8090 #定義埠
servlet:
context-path: / #定義專案的發布路徑
spring:
datasource:
#driver-class-name: com.mysql.cj.jdbc.Driver springboot程式采用默認的配置
url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
username: root
password: root
mvc: #引入mvn配置
view:
prefix: /WEB-INF/ # /默認代表根目錄 src/main/webapp
suffix: .jsp
mybatis-plus:
#定義別名包
type-aliases-package: com.jt.pojo
#加載user標簽的mapper檔案
mapper-locations: classpath:/mybatis/mappers/*.xml
#開啟駝峰映射
configuration:
map-underscore-to-camel-case: true
#引入日志資訊.
logging:
level:
com.jt.mapper: debug
4.5 查詢user串列資料
要求: 用戶通過http://localhost:8090/findAll請求.跳轉到userList.jsp頁面中.并且展現user表所有資料,以MP的方式查詢
4.5.1 編輯UserController
package com.jt.controller;
import com.jt.pojo.User;
import com.jt.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
//@RestController //json 字串本身 不經過視圖決議器
@Controller
public class UserController {
@Autowired
private UserService userService;
/**
* 需求:用戶通過http://localhost:8090/findAll
* 跳轉頁面路徑:userList.jsp
* 頁面取值資訊: el運算式:${userList} 從域中取值.
* 在頁面跳轉之前應該將userList資料保存到域中 key就是userList.
*/
@RequestMapping("/findAll")
public String findAll(Model model){ //利用model物件將資料保存到request物件中.
//1.查詢資料庫 獲取list集合資訊
List<User> userList = userService.findAll();
model.addAttribute("userList",userList);
System.out.println(userList);
return "userList";
}
}
4.5.2 編輯UserService
package com.jt.service;
import com.jt.mapper.UserMapper;
import com.jt.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService{
@Autowired
private UserMapper userMapper;
@Override
public List<User> findAll() {
return userMapper.selectList(null);
}
}
4.6 關于IDEA啟動web專案配置
說明:配置IDEA啟動項.將作業目錄配置到本專案即可

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/120372.html
標籤:其他
下一篇:廣州公司筆/面經
