做资料分享网站,重庆是哪个省的城市,抄袭网站怎么办,wordpress 刷评论数量1.前言 很多同学进入公司就开始参与项目开发#xff0c;大多数情况是对某个项目进行维护或者需求迭代#xff0c;能够从0到1参与到项目中的机会很少#xff0c;因此并没有多少机会了解某些技术的运行机制。换句话说#xff0c;有的面试官在面试的时候就会探讨深层的技术问题…1.前言 很多同学进入公司就开始参与项目开发大多数情况是对某个项目进行维护或者需求迭代能够从0到1参与到项目中的机会很少因此并没有多少机会了解某些技术的运行机制。换句话说有的面试官在面试的时候就会探讨深层的技术问题而不是关心你知道什么业务怎么用技术去实现业务。 今天要讲的就是SpringBoot操纵数据库这个大家做得比较多的就是去写一个Dao的类然后在mapper.xml文件里面写SQL最后封装成Service供Controller调。如果让你去搭建好这个项目的基础框架你该怎么做呢我们今天就来看看。
2.Spring架构 下面这张图是我最喜欢看的一张图也是对Spring体系结构描述最准确的一张图大家学习Spring了解最多的可能是IOC、DI、AOP这些名词其实Spring还有一个很强大的组件就是Spring Data。 如果是只用Spring则需要采用下面依赖就可以进行数据库的访问了 dependencygroupIdorg.springframework.data/groupIdartifactIdspring-data-jpa/artifactId/dependency
3.SpringBoot操纵数据库 现在的项目一般都是基于SpringBoot的我们只需通过下面的依赖即可访问数据源 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-jdbc/artifactId
/dependency 点进这个依赖进去看会发现它又依赖于 dependencygroupIdcom.zaxxer/groupIdartifactIdHikariCP/artifactIdversion3.4.2/versionscopecompile/scope/dependencydependencygroupIdorg.springframework/groupIdartifactIdspring-jdbc/artifactIdversion5.2.4.RELEASE/versionscopecompile/scope/dependency 我们知道了SpringBoot的默认连接池用的HikariCP。因为我们连接的是mysql数据库因此除了依赖spring-boot-starter-jdbc还需要依赖
dependencygroupIdmysql/groupIdartifactIdmysql-connector-java/artifactId/dependency 下面在数据库建一张student的表这个不需要讲如何建吧如果需要欢迎留言然后写一个controller类如下
RestController
public class StudentController {AutowiredJdbcTemplate jdbcTemplate;GetMapping(/students)public ListMapString,Object userList(){String sql select * from student;ListMapString, Object maps jdbcTemplate.queryForList(sql);return maps;}
} 启动SpringBoot如何建一个SpringBoot项目如果不会可以参考我的文章 在浏览器中输入http://localhost:8080/students 结果就来了如何结果没出来的欢迎留言我会及时解答。这个时候看控制台的输出会发现是使用的HikariPool
2023-04-13 22:47:56.526 INFO 22916 --- [nio-8080-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Starting...
2023-04-13 22:47:58.365 INFO 22916 --- [nio-8080-exec-1] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Start completed.
4.配置数据库连接池Druid
不用SpringBoot自带的连接池使用阿里巴巴的Druid连接池添加pom依赖
dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.1.12/version
/dependency
在application.yml里面增加数据源类型 type: com.alibaba.druid.pool.DruidDataSource
重新启动服务调用上面的接口
2023-04-13 22:57:26.563 INFO 18764 --- [nio-8080-exec-1] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited5.使用MyBatis
好的数据访问离不开优秀的持久层框架这时就要用MyBatis用了它不仅可以将SQL和Java代码分离还能非常方便的讲Java实体与数据库数据做映射。添加pom依赖
dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.1.2/version
/dependency
写一个实体类接收数据字段和数据库里一致即可这里就不贴代码了。再写一个接口
Mapper
public interface StudentDao {ListStudent getAll();
}
在mapper.xml文件里写
!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd
mapper namespacecom.example.dao.StudentDaoselect idgetAll resultTypecom.example.entity.Studentselect * from student/select
/mapper
最后在controller里写 GetMapping(/studentList)public ListStudent studentList(){ListStudent list studentDao.getAll();return list;}
总结 今天一步步从架构谈起讲到如何去使用更优秀的连接池以及持久层框架去做数据存储希望能让大家更清楚这里面的原理。