這篇文章主要介紹Spring Boot數(shù)據(jù)訪問(wèn)之Mybatis的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)建站長(zhǎng)期為千余家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開(kāi)放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為紅寺堡企業(yè)提供專業(yè)的做網(wǎng)站、成都網(wǎng)站設(shè)計(jì),紅寺堡網(wǎng)站改版等技術(shù)服務(wù)。擁有10年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開(kāi)發(fā)。
JDBC:Java和關(guān)系型數(shù)據(jù)庫(kù)的橋梁,是一個(gè)規(guī)范,不是實(shí)現(xiàn)。不同類型的數(shù)據(jù)庫(kù)需要有自己的JDBC實(shí)現(xiàn)
數(shù)據(jù)源:包含數(shù)據(jù)庫(kù)連接池,連接池管理。常見(jiàn)的有C3P0、HikariDataSoiurce、Druid等
連接池:預(yù)先創(chuàng)建一些數(shù)據(jù)庫(kù)連接,放到連接池里面,用的時(shí)候從連接池里面取,用完后放回連接池
連接池管理:創(chuàng)建數(shù)據(jù)庫(kù)連接,管理數(shù)據(jù)庫(kù)連接
JDBC實(shí)現(xiàn):MySQL JDBC實(shí)現(xiàn)、Oracle JDBC實(shí)現(xiàn)等其他實(shí)現(xiàn)
MyBatis對(duì)JDBC進(jìn)行了封裝
我們基于之前創(chuàng)建的項(xiàng)目spring-boot-06-data-druid 來(lái)創(chuàng)建spring-boot-07-data-mybatis項(xiàng)目
1)引入MyBatis依賴
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.1
2)引入其他依賴
org.springframework.boot
spring-boot-starter-web
mysql
mysql-connector-java
runtime
io.springfox
springfox-swagger2
2.9.2
io.springfox
springfox-swagger-ui
2.9.2
com.alibaba
druid
1.1.21
3)依賴圖
DROP TABLE IF EXISTS `department`;
CREATE TABLE `department` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`department_name` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
initialization-mode: always
schema:
- classpath:department.sql
執(zhí)行一次后,注釋 initialization-mode
# initialization-mode: always
package com.jackson0714.springboot.entity;
public class Department {
private Long id;
private String departmentName;
public void setId(Long id) {
this.id = id;
}
public Long getId() {
return id;
}
public void setDepartmentName(String departmentName) {
this.departmentName = departmentName;
}
public String getDepartmentName() {
return departmentName;
}
}
增刪改查,你要的都在這里:
@Mapper
public interface DepartmentMapper {
@Select("select * from department")
List
@Select("select * from department where id=#{id}")
Department getDepartmentById(Long id);
@Delete("delete from department where id=#{id}")
int deleteDepartment(Long id);
@Insert("insert into department(department_name) values(#{departmentName})")
int createDepartment(String departmentName);
@Update("update department set department_name=#{departmentName} where id=#{id}")
int updateDepartmentById(Long id, String departmentName);
}
增加自定義配置:如果表的字段名有下劃線格式的,轉(zhuǎn)為駝峰命名格式
@org.springframework.context.annotation.Configurationpublic class MyBatisConfig { @Bean public ConfigurationCustomizer configurationCustomizer() { return new ConfigurationCustomizer() { @Override public void customize(Configuration configuration) { // 如果表的字段名有下劃線格式的,轉(zhuǎn)為駝峰命名格式 configuration.setMapUnderscoreToCamelCase(true); } }; }}
@Api(value = "DepartmentController", description = "部門controller")
@RequestMapping("/v1/client")
@RestController
public class DepartmentController {
@Autowired
DepartmentMapper departmentMapper;
@ApiOperation(value = "1.查詢所有部門")
@GetMapping("/dept/getAllDepartment")
public List
return departmentMapper.getAllDepartment();
}
@ApiOperation(value = "2.根據(jù)id查詢某個(gè)部門")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "需要查詢的部門id")
})
@GetMapping("/dept/{id}")
public Department getDepartmentById(@PathVariable Long id) {
return departmentMapper.getDepartmentById(id);
}
@ApiOperation(value = "3.新增部門")
@ApiImplicitParams({
@ApiImplicitParam(name = "name", value = "部門名稱")
})
@PostMapping("/dept/create")
public int createDepartment(@RequestParam String name) {
return departmentMapper.createDepartment(name);
}
@ApiOperation(value = "4.根據(jù)id刪除部門")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "需要?jiǎng)h除的部門id")
})
@PostMapping("/dept/delete")
public int deleteDepartment(@RequestParam Long id) {
return departmentMapper.deleteDepartment(id);
}
@ApiOperation(value = "5.根據(jù)id更新部門名稱")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "需要更新的部門id"),
@ApiImplicitParam(name = "name", value = "需要更新的部門名稱")
})
@PostMapping("/dept/update")
public int updateDepartmentById(@RequestParam Long id, @RequestParam String name) {
return departmentMapper.updateDepartmentById(id, name);
}
}
使用Swagger來(lái)測(cè)試
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID',
`user_name` varchar(255) COLLATE utf8mb4_bin NOT NULL COMMENT '用戶名',
`password` varchar(255) COLLATE utf8mb4_bin NOT NULL,
`salt` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '隨機(jī)鹽',
`nickName` varchar(255) COLLATE utf8mb4_bin NOT NULL COMMENT '用戶名',
`phone` varchar(20) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '手機(jī)號(hào)',
`avatar` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '頭像',
`mini_openId` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '小程序OpenId',
`lock_flag` char(1) COLLATE utf8mb4_bin DEFAULT '0' COMMENT '0-正常,9-鎖定',
`del_flag` char(1) COLLATE utf8mb4_bin DEFAULT '0' COMMENT '0-正常,1-刪除',
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間',
`update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時(shí)間',
PRIMARY KEY (`user_id`),
KEY `user_wx_openid` (`mini_openId`),
KEY `user_idx1_username` (`user_name`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC COMMENT='用戶表';
INSERT INTO user(user_name, password, nick_name, phone) values ("jackson0714", "123", "悟空聊架構(gòu)", "123456")
package com.jackson0714.springboot.entity;
import lombok.Data;
import java.sql.Timestamp;
@Data
public class User {
private Long userId;
private String userName;
private String password;
private String salt;
private String nickName;
private String phone;
private String avatar;
private String miniOpenId;
private String openId;
private Boolean lockFlag;
private Boolean delFlag;
private Timestamp createTime;
private Timestamp updateTime;
}
需要安裝Lombok插件
需要引入Lombok依賴
org.projectlombok
lombok
1.18.12
provided
// @Mapper 或MapperScan 將接口掃描裝配到裝配容器中
public interface UserMapper {
User getUserById(Long userId);
}
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
@Api(value = "UserController", description = "用戶controller")
@RequestMapping("/v1/client")
@RestController
public class UserController {
@Autowired
UserMapper userMapper;
@ApiOperation(value = "1.根據(jù)id查詢某個(gè)用戶")
@ApiImplicitParams({
@ApiImplicitParam(name = "需要查詢的用戶userId", value = "需要查詢的用戶userId")
})
@GetMapping("/emp/{userId}")
public User getUser(@PathVariable("userId") Long userId) {
return userMapper.getUserById(userId);
}
}
@MapperScan(value = "com.jackson0714.springboot.mapper")@SpringBootApplicationpublic class Springboot07DataMybatisApplication { public static void main(String[] args) { SpringApplication.run(Springboot07DataMybatisApplication.class, args); }}
代碼下載:
https://github.com/Jackson0714/study-spring-boot.git
以上是“Spring Boot數(shù)據(jù)訪問(wèn)之Mybatis的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!