今天讲讲怎么样让后端服务和数据库合二为一,正所谓男女搭配干活不累,有了数据库的翅膀,前端、后台、数据就算一个完整的Demo了。
本节的目标:
spring后台连接上篇文章的数据库金库的存放-CentOS数据库安装
可以通过rest api接口读取、写入数据表demo
先列出知识点,可以随意跳跃着看。
1. 缘分一道桥:后端如何链接数据库
2. 神器在我手:如何快速生成Dao层
3. 3. 万事俱备矣:控制层与Dao的合体
4. 4. 指尖上舞蹈:运行测试
5. 1. 缘分一道桥:后端如何链接数据**库
首先来一个灵魂三问:为什么要链接数据库,用什么链接数据库,如何链接数据库。
OK,第一个问题,后台服务往往要处理成千上万的数据,这些数据不可能都存在内存里面,需要有一个地方存储,然后服务用到的时候再去获取,存数据的地方就是数据库。数据库有很多类型,关系数据库,文档数据库等等(有空可以写一个数据库系列)。大家可以参考上一篇文章《安装数据库》,进行数据库的安装。
第二个问题:我们这里使用mybatis和数据库通信。mybatis是一个优秀的持久层框架,后面我们会有文章专门讲这个,这里知道就好了。
第三个问题,我们分成几步来讲:
step1:添加数据库相关依赖包
pom.xml新增mysql和mybatis包,mysql包是底层的mysql api实现,mybatis会依赖它。其余和之前的保持一致,新增如下:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
step2:添加数据库相关配置项
在resources/application.properties配置数据库地址、密码、驱动器,mybatis对应的工程配置等,直接甩出我的配置如下:
spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name
spring.datasource.username=xxx
spring.datasource.password=xx123
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
mybatis.project = src/main/java
mybatis.resources=src/main/resources
基本看名字就知道什么意思了,不解释,有疑问可以留言。
step3:编译测试
先点击Maven/Lifecycle/install安装新的依赖,如果没有出错,则成功了。
然后右键点击工程里面的xxApplication–>Run,如果没有问题,我们就运行成功。
有了上述的几步,后续我们的代码就可以连接到数据库里面的demo表了。
- 神器在我手:如何快速生成Dao层
第一步只是添加了依赖,但是使用mybatis还需要写Mapper,Entity等数据,还有xm等配置,非常麻烦,一想想就头大,幸好mybatis考虑到一点,可以通过插件:mybatis-generator一键生成上述所有代码。如下:
在pom.xml添加插件依赖包:
org.mybatis.generator mybatis-generator-maven-plugin 1.3.7 mybatis-generator deploy generate #插件配置信息 mybatis-generator/generatorConfig.xml true true mysql mysql-connector-java 5.1.46 step2: 使用配置generatorConfig.xml(可以放到任何目录下)配置数据库相关信息:也就是插件要知道去哪里操作数据库,操作什么表,我的配置如下:<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<context id="mysqlgenerator" targetRuntime="MyBatis3">
<property name="autoDelimitKeywords" value="true"/>
<!--可以使用``包括字段名,避免字段名与sql保留字冲突报错-->
<property name="beginningDelimiter" value="`"/>
<property name="endingDelimiter" value="`"/>
<!-- 自动生成toString方法 -->
<plugin type="org.mybatis.generator.plugins.ToStringPlugin"/>
<!-- 自动生成equals方法和hashcode方法 -->
<plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"/>
<commentGenerator>
<property name="suppressDate" value="true"/>
</commentGenerator>
<!--数据库连接信息-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/coder"
userId="xxcoder"
password="xx123"/>
<javaTypeResolver>
<property name="useJSR310Types" value="true"/>
</javaTypeResolver>
<!--生成模型的包名和位置-->
<javaModelGenerator targetPackage="com.example3.demo.domain" targetProject="src/main/java"/>
<!-- 生成映射文件的包名和位置-->
<sqlMapGenerator targetPackage="com.example3.demo.dao" targetProject="src/main/resources"/>
<!-- 生成DAO的包名和位置-->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.example3.demo.dao"
targetProject="src/main/java"/>
<!--表名-->
<table tableName="demo">
</table>
</context>
</generatorConfiguration>
step3:
首先右键pom.xml–>reimport
然后点击Maven/Plugins/mybatis-generator下面generator,等待代码自动生成,如下:
Demo:对数据表demo对抽象
DemoExample:对操作数据表demo的条件、查询等封装
DemoMapper:Dao层,对操作demo的封装
- 万事俱备矣:控制层与Dao的合体
有了Dao层,Mapper,我们如何使用:查询和插入
step1:建立控制类DemoWebController
step2:添加代码:
@RestController
public class DemoWebController {
@Autowired
private DemoMapper d_mapper;
//操作查询数据库,通过DemoExample构建查询条件
// 这里是select * from demo;
@GetMapping("/getDemo")
public List<Demo> getDemoData(){
DemoExample ex = new DemoExample();
return d_mapper.selectByExample(ex);
}
//操作写入数据库,并且返回写入成功or失败的操作码
@GetMapping("/insertDemo")
public int insertData(){
Demo demo_data = new Demo();
demo_data.setId(33);
demo_data.setData("insert data");
return d_mapper.insert(demo_data);
}
}
代码里面有些注解看不懂没关系,后面会讲。
免费分享Java技术资料,需要的朋友可以在后台私信我
来源:微信公众号
作者:DrunkCoder
原文:手把手教你使用Mybatis连接数据库