小言_互联网的博客

深入浅出微服务(4)-万里长征第一步

439人阅读  评论(0)

上一章:牛刀小试

数据存储是一个永恒的难题

这么有哲理的话必须是资深架构师"黄杰"说的

想当年秦始皇焚书坑儒,就是因为数据存储在竹简或丝绸之上,录入和备份都极为困难.所以一旦付之一炬就彻底完蛋,而中华文明几千年能流传下来的资料也是沧海一粒.
四库全书编撰时更是集全国之力耗费数千人,以数十年之功才能完成,由此可以再传统的数据查询,分析,统计都是极为困难的,而且非常依赖编撰之人对知识的理解.因此,数据保存和检索的技术基本上也能反映一个文明发达的程度.

媳妇说:别装X了,赶紧的.就你这破门面还上升到哲学高度了,瞅你一天嘚瑟的.

麻雀虽小,五脏俱全.门面虽破,但是技术没有嫌贫爱富之心.
既然涉及到数据,那肯定要使用数据库啊

数据库 优势 劣势
oracle 贵,有专业DBA
db2 有专业技术支持
mysql 开源,免费 需要自己学习

媳妇一看,说着还用挑吗.我说嗯.其实还有一些非关系型数据库,不过我们现在用不到,等用的时候再说吧.
mysql installing
.




nice…先来张表.

CREATE TABLE `dynastry`.`base_user`(  
  `user_id` INT NOT NULL AUTO_INCREMENT,
  `username` VARCHAR(32) COMMENT '用户名',
  `password` VARCHAR(32) COMMENT '密码',
  `sex` INT COMMENT '性别',
  `favorites` VARCHAR(255) COMMENT '爱好',
  `first_name` VARCHAR(16) COMMENT '姓',
  `last_name` VARCHAR(16) COMMENT '名',
  `birthday` DATE COMMENT '生日',
  `age` INT COMMENT '年龄',
  PRIMARY KEY (`user_id`)
) ENGINE=INNODB CHARSET=utf8 COLLATE=utf8_general_ci;

varchar长度需要手动指定.尽量给一个合理的值,部分同学就喜欢直接指定255.这样不好.毕竟存储空间都是钱.

下面改造一下我们的工程.

	<properties>
        <java.version>1.8</java.version>
        <mybatisplus.version>3.3.1</mybatisplus.version>
        <mysql.version>8.0.17</mysql.version>
        <druid.version>1.1.13</druid.version>
    </properties>

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>${mybatisplus.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>com.baomidou</groupId>
                    <artifactId>mybatis-plus-generator</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql.version}</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>${druid.version}</version>
        </dependency>

1.首先.添加mysql依赖.其次,使用alibaba开源的druid数据连接池.
2添加mybatisplus依赖

关于mybatisplus网上有很多介绍.其实说简单就是对象数据映射增加框架.对于一些简单的CRUD可以无需SQL,能极大的简化我们的开发量
而且依赖于 约定大于配置 这一规则, 比如我们写一个 getByAge() 这样的方法.plus框架也会自动识别,无需实现,是不是非常的黑科技~~

@Data
@TableName("base_user")
public class UserBean implements Serializable {

    @TableId(type = IdType.AUTO)
    private Long userId;

这里在创建的userbean那里指定一下数据库中的表名.在把ID指定一下自动生成,这样mybatisPlus插入的时候就不会给你插入ID了.

/**
     * 招聘员工
     * @return
     */
    @PostMapping("/save")
    private String saveUser(@RequestBody UserBean userBean) {
        Optional.ofNullable(userBean).map(UserBean::getFavoriteList)
                .map(e-> String.join(",",e))
                .ifPresent(userBean::setFavorites);
        userService.save(userBean);
        return "success";
    }

在新建一个save的招聘员工的方法.因为favorites是list不能直接插入数据库,所以我们转换一下.把他拼接起来在插入进去.这里使用的Optional判空处理.

/**
     * 爱好
     */
    @TableField(exist = false)
    private List<String> favoriteList;
    /**
     * 保存到数据库的是字符串
     */
    private String favorites;

至于我们的服务层,看代码

public interface IUserService extends IService<UserBean> {
    
}


@Service
public class UserServiceImpl extends ServiceImpl<UserDao, UserBean> implements IUserService {

}
@Mapper
public interface UserDao extends BaseMapper<UserBean> {
}

可以看出来,代码非常简洁.基本无需额外开发.运行一下,看看效果.

go!

完美.


wait…好像哪里有问题!


转载:https://blog.csdn.net/u013749176/article/details/106159384
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场