文章目录

  • 背景
  • 配置数据源
    • 引入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相关推荐

  1. spring boot整合MySQL数据库

    spring boot整合MySQL数据库 spring boot整合MySQL数据库可以说很简单,只需要添加MySQL依赖和在配置文件中添加数据库配置信息,利用spring-boot-starter ...

  2. Spring Boot + BeetlSQL + H2数据库项目整合

    Spring Boot + BeetlSQL + H2数据库项目整合 这个项目是一个大佬给的,目的是看我的自学能力和基础知识的牢固程度,要求如下: 底层架构采用springboot 前端技术使用lay ...

  3. druid jar包_使用druid实现Spring boot配置文件中数据库密码密文存储

    通常在编写代码的时候,数据库的用户名和密码以明文的方法写到配置文件中,系统运维为了保证一定的安全性,要求我们在配置文件中使用密文的方式存储,本文主要介绍使用druid实现数据库密码密文显示的方法. 一 ...

  4. Spring boot连接oracle数据库

    之前看到有人需要用spring boot连接Oracle数据库,其实很简单,只需要配置相应的配置文件即可,这里以阿里的druid为例进行配置 spring:datasource:driver-clas ...

  5. 使用Spring Data访问MongoDB数据库

    本文将引导我们如何使用Spring Data MongoDB构建应用程序,并使用应用程序在MongoDB(基于文档的数据库)中存储数据与检索数据. 需要新建什么 我们要使用Spring Data Mo ...

  6. java中用spring boot连接oracle数据库

    java中用spring boot连接oracle数据库 代码下载链接 百度云:https://pan.baidu.com/s/1dU_z2pUS2NSfowI4_mJ4Ow 提取码:mmlm CSD ...

  7. Maven工具管理下的Spring Boot连接Oracle数据库教程

    Maven工具管理下的Spring Boot连接Oracle数据库教程 一.系统环境 二.操作教程 1.明确Oracle版本 2.找到合适的jar包 3.将jar包配置到Maven本地库中 4.在Ec ...

  8. 第六篇:Spring Boot 访问静态资源

    Spring Boot的默认静态资源的路径为: spring.resources.static-locations=classpath:/META-INF/resources/,classpath:/ ...

  9. spring boot访问templates目录下的html静态页面

    spring boot访问静态资源:     1. static目录用来存放js.css.图片等静态资源. . .     2. templates目录用来存放html页面. . . spring b ...

最新文章

  1. jmeter mysql plugin_安装一个jmeter的插件--实现监控事务响应时间、tps等功能
  2. 网络系统工程师的最终归宿(一)创业还是打工
  3. angularjs 元素重复指定次数_leetcode题库-sql练习精讲系列--六、查找重复类问题
  4. Primavera P6 安装配置指南
  5. Docker和Kubernetes应用程序打包:Metaparticle、Pulumi与Ballerina比较
  6. linux复制文件夹所有文件到另一文件夹
  7. ISO七层参考模型, TCP/IP
  8. spring中这些开发技巧真的太diao了
  9. 写烂代码的人离职之后...
  10. vue项目退出登录清除 store 数据
  11. 云刷工具q币android版,交流电app下载2021-交流电交友手机版v3.2.4最新版-游吧乐下载...
  12. 我对网页设计的一点见解!
  13. 如何解决Mac电脑在启动时出现空白屏幕的情况?
  14. vue在图片标注矩形框
  15. 华为 GaussDB 数据库十问
  16. 初窥江湖之PhotoShop抠图(二)
  17. 去掉字符串中的所有空格
  18. Linux如何解决root用户Operation not permitted
  19. 机器学习性能评估——PR曲线与ROC曲线
  20. 人工智能从1.0时代到4.0时代

热门文章

  1. 面经——2022荣耀秋招 嵌入式软件
  2. trajectory planning -i https://pypi.tuna.tsinghua.edu.cn/simple export ALL_PROXY=socks5://12333
  3. 在Matic网络上使用Chainlink预言机
  4. postman汉化教程(历史老版本)
  5. 扩展名不见了?怎么批量给文件添加扩展名?
  6. rr与hr_统计基本功:OR、RR和HR的区别和选择
  7. 程序员为了女朋you进了华为,同学去了阿里,2年后对比收入懵了
  8. OPPO Finder超薄设计体验:6.65mm不是极限
  9. 内存卡的视频容易恢复吗?恢复视频的诀窍
  10. .plist文件里的Bundle versions string, short 跟 Bundl