1、建表
#新建一個user表
CREATE TABLE `user`(
`id` INT(10) NOT NULL auto_increment,
`name` VARCHAR(64) NOT NULL,
`password` VARCHAR(64) NOT NULL,
department_id INT(10),
PRIMARY KEY(id)
),
#新建一個department表
CREATE TABLE department(
`id` INT(10) NOT NULL auto_increment,
dept_name VARCHAR(64) NOT NULL,
PRIMARY KEY(id)
)
2、創建工程,導入mybatis-plus即其他依賴
<!--mybatis-plus依賴-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
<!--mysql依賴-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-spring-boot-starter</artifactId>
<version>2.0.7</version>
</dependency>
3.1、創User實體類
/**
* @author sfybxs
*/
3.2、創department實體類
/**
* @author sfybxs
*/
4、編寫mapper也是最重要的一部分
在resource下面創建一個mapper文件夾下面創建UserMapper.xml文件
導入依賴
sql語句
<select id="findUserPage" resultType="User">
SELECT u.id,u.`name`,u.`password`,u.department_id,
d.dept_name AS `deptName`
FROM `user` u
INNER JOIN department d
ON u.department_id = d.id
${ew.customSqlSegment}
</select>
</mapper>
<select id="findUserPage">
SELECT u.id,u.`name`,u.`password`,u.department_id,
d.dept_name AS `deptName`
FROM `user` u
INNER JOIN department d
ON u.department_id = d.id
${ew.customSqlSegment}
</select>
mapper接口
/**
* <p>
* 用戶表 Mapper 接口
* </p>
*
* @author mjy
* @since 2021-01-20
*/
public interface UserMapper extends BaseMapper<User> {
/**
* 自定義多表查詢
* @param page
* @param wrapper
* @return
*/
IPage<User> findUserPage(Page<User> page,
配置yml文件
server
5、編寫service層代碼
service接口層代碼
/**
* @author sfybxs
*/
public interface UserService extends IService<User> {
/**
*
* @param userVo
* @param wrapper 用來傳入參數到sql語句中
* @return
*/
List<User> findUserPage(UserVo userVo ,
因為真正的業務的時候許需要通過多個字段進行查詢,是需要封裝一個vo(view object)來進行數據庫的查詢,因為沒設置這么多字段,所以,我的vo就三個字段,就通過賬號和密碼以及部門編號進行查詢,可以通過業務來修改vo中的屬性
/**
* @author sfybxs
*/
編寫一個utils類來判斷字段是否為空
/**
* @author sfybxs
*/
public class UserUtils {
public static QueryWrapper<User> getQueryWrapper(UserVo userVo){
QueryWrapper queryWrapper = new QueryWrapper();
if (userVo!=null){
if (!StringUtils.isEmpty(userVo.getDepartmentId())){
queryWrapper.eq("department_id",userVo.getDepartmentId());
}
if (!StringUtils.isEmpty(userVo.getName())){
queryWrapper.eq("name",userVo.getName());
}
if (!StringUtils.isEmpty(userVo.getPassword())){
queryWrapper.eq("password",userVo.getPassword());
}
}
return queryWrapper;
}
}
編寫service實現類
6、controller根據自己的需求進行書寫
1.先要創建一個返回狀態嗎碼的接口
/**
* @author sfybxs
*/
public interface CustomizeResultCode {
/**
* 獲取錯誤狀態碼
* @return 錯誤狀態碼
*/
Integer getCode();
/**
* 獲取錯誤信息
* @return 錯誤信息
*/
String getMessage();
}
2.編寫實現類
/**
* @author sfybxs
*/
public enum ResultCode implements CustomizeResultCode{
/**
* 20000:"成功"
*/
SUCCESS(20000,"成功"),
/**
* 20001:"失敗"
*/
ERROR(20001,"失敗"),
/**
* 3005:"密碼不正確!"
*/
PASS_NOT_CORRECT(3005, "密碼不正確!請重新嘗試!"),
/**
* 3006:"算數異常"
*/
ARITHMETIC_EXCEPTION(3006, "算數異常"),
/**
* 3007:"用戶不存在"
*/
USER_NOT_FOUND_EXCEPTION(3007, "用戶不存在"),
/**
* 3007:"用戶不存在"
*/
DEPT_NOT_FOUND_EXCEPTION(3008, "沒有查詢到部門信息"),
/**
* 3006:"尚未登錄!"
*/
NOT_LOGIN(3006, "尚未登錄!"),
/**
* 2005:"沒有找到這一條歷史信息!有人侵入數據庫強制刪除了!"
*/
INTRODUCTION_NOT_FOUND(2005, "沒有找到這一條歷史信息!有人侵入數據庫強制刪除了!"),
/**
* 404:沒有找到對應的請求路徑
*/
PAGE_NOT_FOUND(404, "你要請求的頁面好像暫時飄走了...要不試試請求其它頁面?"),
/**
* 500:服務端異常
*/
INTERNAL_SERVER_ERROR(500, "服務器冒煙了...要不等它降降溫后再來訪問?"),
/**
* 2001:未知異常
*/
UNKNOW_SERVER_ERROR(2001, "未知異常,請聯系管理員!");
;
private Integer code;
private String message;
ResultCode(Integer code, String message) {
this.code = code;
this.message = message;
}
3.編寫一個公共返回的接口
/**
* 公共返回結果
*
* @author sfybxs
*/
