Spring Boot访问关系型数据库三剑客JDBC、JPA、Mybatis
文章目录
- 背景
- 配置数据源
- 引入mysql
- yml文件配置项
- Spring Data JDBC
- 添加依赖
- 新建Entity
- 控制器演示代码
- 浏览器访问结果
- Spring Data JPA
- 添加依赖
- 新建Entity
- 新建Repository接口
- 控制器演示代码
- 浏览器访问结果
- Mybatis
- 添加依赖
- 新建Entity
- 新建Mapper接口
- 控制器演示代码
- yml配置项
- Application启动
- 浏览器访问结果
- 总结
背景
从业十多年Spring JDBC、JPA、Mybatis三种持久层框架都使用过,各有千秋,当下的项目使用Mybatis最多。之前的项目还都是使用xml配置文件的框架,最近两年才用Spring Boot多起来,因为老程序员不干屈居人后的进取心,且不想搞那繁琐而无边际的业务需求,所以利用业余时间扑下心来好好看看官文。随着年龄的增长,精力、记性却不断递减,怕时间长了不知其初心,所以记录之。
在官方文档向导中存在关于JDBC和JPA的资料,我想从实际项目的角度出发去学习并记录,所以我以mysql数据库作为存储,从配置数据源、JDBC访问数据、JPA访问数据、Mybatis访问数据几方面去学习。
配置数据源
引入mysql
新建一个Spring Boot工程,引入mysql驱动。
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency>
yml文件配置项
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test
spring.datasource.username=root
spring.datasource.password=mysql3306@118
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
Spring Data JDBC
新建一个web工程,添加jdbc、web等相关依赖包。
添加依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
jar包依赖如下:
新建Entity
public class JdbcUser {private Integer id;private String name;private String email;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}@Overridepublic String toString() {return "JpaUser{" +"id=" + id +", name='" + name + '\'' +", email='" + email + '\'' +'}';}
}
控制器演示代码
@RestController
public class JdbcController {protected final static Logger logger = LoggerFactory.getLogger(JdbcController.class);@Autowiredpublic JdbcTemplate jdbcTemplate;@GetMapping("/jdbc/users")public List<JdbcUser> users() {return jdbcTemplate.query("select id,name,email from jdbc_user", new RowMapper<JdbcUser>() {@Overridepublic JdbcUser mapRow(ResultSet rs, int rowNum) throws SQLException {JdbcUser jdbcUser = new JdbcUser();jdbcUser.setId(rs.getInt(1));jdbcUser.setName(rs.getString(2));jdbcUser.setEmail(rs.getString(3));return jdbcUser;}});}
}
浏览器访问结果
http://127.0.0.1:8080/jdbc/users
[{"id":4,"name":"李田","email":"litian@126.com"},{"id":5,"name":"王华","email":"wanghua@126.com"}]
Spring Data JPA
添加依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
新建Entity
@Entity
public class JpaUser {@Idprivate Integer id;private String name;private String email;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}@Overridepublic String toString() {return "JpaUser{" +"id=" + id +", name='" + name + '\'' +", email='" + email + '\'' +'}';}
}
新建Repository接口
public interface UserRepository extends JpaRepository<JpaUser, Integer> {}
控制器演示代码
@RestController
public class TestController {protected final static Logger logger = LoggerFactory.getLogger(TestController.class);@Autowiredprivate UserRepository userRepository;@GetMapping("/jpa/users")public List<JpaUser> users() {return userRepository.findAll();}}
浏览器访问结果
[{"id":4,"name":"赵五","email":"zhaowu@126.com"}]
Mybatis
添加依赖
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency>
新建Entity
public class Teacher {private Integer id;private String name;private Integer age;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}@Overridepublic String toString() {return "Teacher{" +"id=" + id +", name='" + name + '\'' +", age=" + age +'}';}
}
新建Mapper接口
@Repository
public interface TeacherMapper {public int insertTeacher(Teacher teacher);public List<Teacher> selectList();
}
控制器演示代码
@RestController
public class MybatisController {protected final static Logger logger = LoggerFactory.getLogger(MybatisController.class);@Autowiredpublic TeacherMapper teacherMapper;@GetMapping("mybatis/teachers")public List<Teacher> teachers() {Teacher teacher = new Teacher();teacher.setName("李继");teacher.setAge(35);teacherMapper.insertTeacher(teacher);return teacherMapper.selectList();}
}
yml配置项
除了数据源的配置外,添加mybatis的配置,如下:
mybatis.mapper-locations=classpath:config/*Mapper.xml
mybatis.type-aliases-package=com.example.entity
Application启动
@SpringBootApplication
@MapperScan(basePackages = "com.example.dao", annotationClass = Repository.class)
public class MysqlMybatisDemoApplication {public static void main(String[] args) {SpringApplication.run(MysqlMybatisDemoApplication.class, args);}}
浏览器访问结果
http://127.0.0.1:8080/mybatis/teachers
[{"id":1,"name":"李继","age":35},{"id":2,"name":"李继","age":35},{"id":3,"name":"李继","age":35}]
总结
通过学习,三种框架基本情况如下:
Spring Boot访问关系型数据库三剑客JDBC、JPA、Mybatis相关推荐
- spring boot整合MySQL数据库
spring boot整合MySQL数据库 spring boot整合MySQL数据库可以说很简单,只需要添加MySQL依赖和在配置文件中添加数据库配置信息,利用spring-boot-starter ...
- Spring Boot + BeetlSQL + H2数据库项目整合
Spring Boot + BeetlSQL + H2数据库项目整合 这个项目是一个大佬给的,目的是看我的自学能力和基础知识的牢固程度,要求如下: 底层架构采用springboot 前端技术使用lay ...
- druid jar包_使用druid实现Spring boot配置文件中数据库密码密文存储
通常在编写代码的时候,数据库的用户名和密码以明文的方法写到配置文件中,系统运维为了保证一定的安全性,要求我们在配置文件中使用密文的方式存储,本文主要介绍使用druid实现数据库密码密文显示的方法. 一 ...
- Spring boot连接oracle数据库
之前看到有人需要用spring boot连接Oracle数据库,其实很简单,只需要配置相应的配置文件即可,这里以阿里的druid为例进行配置 spring:datasource:driver-clas ...
- 使用Spring Data访问MongoDB数据库
本文将引导我们如何使用Spring Data MongoDB构建应用程序,并使用应用程序在MongoDB(基于文档的数据库)中存储数据与检索数据. 需要新建什么 我们要使用Spring Data Mo ...
- java中用spring boot连接oracle数据库
java中用spring boot连接oracle数据库 代码下载链接 百度云:https://pan.baidu.com/s/1dU_z2pUS2NSfowI4_mJ4Ow 提取码:mmlm CSD ...
- Maven工具管理下的Spring Boot连接Oracle数据库教程
Maven工具管理下的Spring Boot连接Oracle数据库教程 一.系统环境 二.操作教程 1.明确Oracle版本 2.找到合适的jar包 3.将jar包配置到Maven本地库中 4.在Ec ...
- 第六篇:Spring Boot 访问静态资源
Spring Boot的默认静态资源的路径为: spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/ ...
- spring boot访问templates目录下的html静态页面
spring boot访问静态资源: 1. static目录用来存放js.css.图片等静态资源. . . 2. templates目录用来存放html页面. . . spring b ...
最新文章
- jmeter mysql plugin_安装一个jmeter的插件--实现监控事务响应时间、tps等功能
- 网络系统工程师的最终归宿(一)创业还是打工
- angularjs 元素重复指定次数_leetcode题库-sql练习精讲系列--六、查找重复类问题
- Primavera P6 安装配置指南
- Docker和Kubernetes应用程序打包:Metaparticle、Pulumi与Ballerina比较
- linux复制文件夹所有文件到另一文件夹
- ISO七层参考模型, TCP/IP
- spring中这些开发技巧真的太diao了
- 写烂代码的人离职之后...
- vue项目退出登录清除 store 数据
- 云刷工具q币android版,交流电app下载2021-交流电交友手机版v3.2.4最新版-游吧乐下载...
- 我对网页设计的一点见解!
- 如何解决Mac电脑在启动时出现空白屏幕的情况?
- vue在图片标注矩形框
- 华为 GaussDB 数据库十问
- 初窥江湖之PhotoShop抠图(二)
- 去掉字符串中的所有空格
- Linux如何解决root用户Operation not permitted
- 机器学习性能评估——PR曲线与ROC曲线
- 人工智能从1.0时代到4.0时代
热门文章
- 面经——2022荣耀秋招 嵌入式软件
- trajectory planning -i https://pypi.tuna.tsinghua.edu.cn/simple export ALL_PROXY=socks5://12333
- 在Matic网络上使用Chainlink预言机
- postman汉化教程(历史老版本)
- 扩展名不见了?怎么批量给文件添加扩展名?
- rr与hr_统计基本功:OR、RR和HR的区别和选择
- 程序员为了女朋you进了华为,同学去了阿里,2年后对比收入懵了
- OPPO Finder超薄设计体验:6.65mm不是极限
- 内存卡的视频容易恢复吗?恢复视频的诀窍
- .plist文件里的Bundle versions string, short 跟 Bundl