数据存储是一个永恒的难题
这么有哲理的话必须是资深架构师"黄杰"说的
想当年秦始皇焚书坑儒,就是因为数据存储在竹简或丝绸之上,录入和备份都极为困难.所以一旦付之一炬就彻底完蛋,而中华文明几千年能流传下来的资料也是沧海一粒.
四库全书编撰时更是集全国之力耗费数千人,以数十年之功才能完成,由此可以再传统的数据查询,分析,统计都是极为困难的,而且非常依赖编撰之人对知识的理解.因此,数据保存和检索的技术基本上也能反映一个文明发达的程度.
媳妇说:别装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