• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

XD 08 – 09

开发技术 开发技术 3个月前 (04-11) 14次浏览

JPA: 老的数据库框架, 性能很不好, 不推荐使用.

Hiberante: ORM 框架

Mybatis: 互联网使用更多, 半 ORM.

集成 Mybatis

包:

model 或者 domain, 用来存放实体类. 是一堆 JavaBean.

mapper: 访问数据库的接口

service: 业务逻辑

步骤:

1. 添加相关依赖, 在 pom 文件中添加依赖.

XD 08 - 09

 

XD 08 - 09

 

2. 加入配置文件

XD 08 - 09

 

 3. 启动类增加 mapper 扫描

@MapperScan(“com.example.demo.mapper”)

XD 08 - 09

 

4. 开发 mapper (相当于其他框架的 DAO 层)

这部分有内容需要开发, 访问数据库的接口.

比如 insert: @Insert 是 Mybatis 的注解, 括号里写 sql 语句. SQL 语句中的 #{name} 等值是通过下边 int insert(User user) 的 User user 传进来的.

所以这个 name, phone 等名称必须要与 user 对象的属性名一一对应的.

XD 08 - 09

 

 写 service:

也是先写一个 userService 的 interface, 然后在 service 内部创建一个 impl (implementation) 的包用来实现接口.

然后在包里创建一个类 UserServiceImpl implements UserService

在这个类中注入: userMapper:

@Autowired

private userMapper userMapper;

XD 08 - 09

XD 08 - 09

 

在 controller 中:

XD 08 - 09

5. sql 脚本

创建表的脚本 

create table user_xd (
`id` int(11) UNSIGNED not null auto_increment,
`name` VARCHAR(128) DEFAULT null COMMENT ‘名称’,
`phone` varchar(16) DEFAULT null COMMENT ‘手机’,
`age` int(4) DEFAULT null COMMENT ‘年龄’,
primary key(`id`)
);

Comments:

XD 08 - 09

 

主流程 

controller -> service -> Mapper

其中, model 只是作为实体类, 将需要操作 DB 的 column 封装到对象中. (这样可以方便传递参数, 也可以方便返回 DB 结果)

具体代码: Controller:

XD 08 - 09

 

具体代码: Service 接口 和 实现. (Mapper 只对 Service 负责, 不对外提供服务)

XD 08 - 09

 

XD 08 - 09

 

具体 Mapper: 如果有 xml 一般可能是因为写的 SQL 语句比较复杂, 所以单独写 SQL, 这个xml 只对 Mapper 负责.

XD 08 - 09

 

具体 Model:

1. 与 DB 中的 table 意义对应的实体类. (只有 get, set 方法)

2. 也包括对外暴露的数据接口类, 数据库多表操作时, 个人理解这个肯定非常有用的.

XD 08 - 09

 

说到底, 还是 DB 的操作, 在这个操作过程中:

Mapper 主要负责和 DB 打交道.

Service 主要根据逻辑, 然后调用 Mapper.

 

分布式事务处理: 一般用消息队列解决, RobbitMQ.

事务控制, 一般在 service 层做控制. 用注解是最方便的. 在 service 层的方法增加注解

@Transactional(Propagation=Propagation.REQUIRED) isolation 隔离级别, 如果不指定就会使用 DB 的隔离级别, isolation一般使用默认的就可以了

Propagation 是传播行为: REQUIRED 最常见的, 是需要事务的.

XD 08 - 09

SpringBoot 整合 Redis

分布式缓存 Redis

https://try.redis.io/     测试小工具, 用来测试 redis 命令.

redis.conf 配置 redis

redis 本身有白名单限制. 不允许除本机外的访问, 如果想要访问, 需要把对方的 IP 地址配置到白名单里.

bind 192.168.1.101 192.168.1.102    类似这种

lsof -i:6379  可以查看这个端口是否被占用了. 这是一个 Linux 命令

1. 添加 Maven 依赖

XD 08 - 09

 

2. 配置文件: application.yml / application.properties

下边很多都是默认值, 也可以不copy

 XD 08 - 09

 

简单的方式: 直接从 controller 调用 Redis, 用到了 StringRedisTemplate

下边的 JsonData 就是自己定义的, 对外的数据接口.

 XD 08 - 09

 

正常情况下, 应该用工具类封装对 Redis 的操作.

Redis 有 Desktop 工具: https://redisdesktop.com/download

RedisClient 类,  工具类: 对象转字符串, 字符串转对象

 


程序员灯塔
转载请注明原文链接:XD 08 – 09
喜欢 (0)