zoukankan      html  css  js  c++  java
  • XD 08

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

    Hiberante: ORM 框架

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

    集成 Mybatis

    包:

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

    mapper: 访问数据库的接口

    service: 业务逻辑

    步骤:

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

    2. 加入配置文件

     3. 启动类增加 mapper 扫描

    @MapperScan("com.example.demo.mapper")

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

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

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

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

     写 service:

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

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

    在这个类中注入: userMapper:

    @Autowired

    private userMapper userMapper;

    在 controller 中:

    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:

    主流程 

    controller -> service -> Mapper

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

    具体代码: Controller:

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

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

    具体 Model:

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

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

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

    Mapper 主要负责和 DB 打交道.

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

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

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

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

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

    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 依赖

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

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

     

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

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

     

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

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

    RedisClient 类,  工具类: 对象转字符串, 字符串转对象, 实际上, 就是把对 redis 操作, 封装起来.

  • 相关阅读:
    关闭页面的Js方法
    正则
    css3颜色渐变
    HTML learning
    jquery dwn 开发学习
    前人栽树后人乘凉
    剑指offer-面试题53_2-0~n-1中缺失的数字-二分查找
    剑指offer-面试题53_1-在排序数组中查找数字-二分查找
    堆排序
    剑指offer-面试题52-两个链表的第一个公共节点-链表
  • 原文地址:https://www.cnblogs.com/moveofgod/p/14644001.html
Copyright © 2011-2022 走看看