一、前述
在日常生活中,我们所使用到的应用(如:聊天类、餐饮类、出行类)和用户之间的交互无非就是数据与数据之间的交互。在数据库中的操作,无非就是数据表与数据表之间的级联查询(一对一、一对多、多对多) + 查询条件 来完成一些数据操作,然后反馈给用户,就基本完成了一项功能。
当然如果存在一些复杂的业务需求,就可能需要配合其他技术来完成。(闲扯一下)
比如:
- 1、聊天类应用,实现用户与用户聊天。餐饮类应用,存在一个账单等待支付(过期销毁)
(1)B/S架构:Browser端就需要使用到TCP协议(如:Web Scoker),Service端就需要使用到定时任务技术(如:Spring Task)。
(2)C/S架构:Client端和Browser端一样也需要TCP协议(如:OkHttp),Service端同上。- 2、出行类应用,从一个地方到达另外一个地方,数据库反馈的是一笔大量的数据,用户肯定很难看懂。那么就需要进行数据渲染(比如:2DCanvas)
二、介绍
用户传递过来的数据,一般存储在内存(寄存器和堆栈)中,但不会长久存储下来,那么就需要用到数据存储技术(数据库Database)来记录用户需要的数据。数据库又分为网络数据库、层次数据库、关系数据库,这里我们主要是关于关系型数据在Web开发的应用。
三、配置
本篇主要记录 > 关系型数据库在Spring Boot中的使用
1、MySql数据库
关于数据库的安装,在网站上存在很多教程,就不再描述。
(1)依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
(2)配置
- yml配置文件(application.yml)
spring:
datasource:
name: databse_name # 数据库名
url: jdbc:mysql://localhost:3306/databse_name # 访问url,localhost为IP地址,3306为端口,databse_name为数据库名
username: root_name # 用户名
password: root_pass # 密码
driver-class-name: com.mysql.cj.jdbc.Driver # 数据库链接驱动
- xml配置文件(application.xml)
<!-- 配置数据源 -->
<bean id="ds"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
<property name="url"
value="jdbc:mysql://localhost:3306/table_name?characterEncoding=utf8"></property>
<property name="username" value="root_name"></property>
<property name="password" value="root_pass"></property>
</bean>
<!-- 添加事务支持 -->
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="ds"></property>
</bean>
2、Oracle数据库
(1)依赖
<dependency>
<groupId>com.oracle.database.jdbc</groupId>
<artifactId>ojdbc6</artifactId>
<version>11.2.0.4</version>
</dependency>
(2)配置
- yml配置文件(application.yml)
spring:
datasource:
name: databse_name # 数据库名
url: jdbc:oracle:thin:@localhost:1521:orcls/databse_name # 访问url,localhost为IP地址,1521为端口,databse_name为数据库名
username: root_name # 用户名
password: root_pass # 密码
driver-class-name: oracle.jdbc.driver.OracleDriver # 数据库链接驱动
- xml配置文件(application.xml)
<bean id="ds" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:orcls/databse_name"/>
<property name="username" value="root_name"/>
<property name="password" value="root_pass"/>
</bean>
<!-- 添加事务支持 -->
<bean id="txManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="ds"></property>
</bean>
四、Mybatis配置
- 依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
- yml配置文件(application.yml)
根据自己使用的什么架构来二选一
mybatis:
#mapper配置文件
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.xpq.entity
configuration:
#开启驼峰命名
map-underscore-to-camel-case: true
- xml配置文件(mybatis-config.xml)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<!-- 打开延迟加载的开关 -->
<setting name="lazyLoadingEnabled" value="true" />
<!-- 将积极加载改为按需加载 -->
<setting name="aggressiveLazyLoading" value="false" />
</settings>
<mappers>
<mapper resource="/mapper/OrderMapper.xml"></mapper>
</mappers>
</configuration>
五、使用
OrderMapper.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.xpq.mapper.OrderMapper">
<update id="update">
update order
<set>
<if test="name != null">name = #{name},</if>
</set>
where id = #{id}
</update>
</mapper>
OrderMapper.java文件,主要就是一些简单的sql使用方法,关于符合业务需求的sql使用,我将会写一篇专门的博客用于介绍
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface OrderMapper {
@Select("select * from order where id=#{id}")
Order select(Long id);
@Insert("insert into order(id, name, user_id) values(#{id}, #{name}, #{userId})")
int insert(Order order);
void update(Order order);
@Delete(delete from order where id=#{id})
void delete(Long id);
}