范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

SpringBoot整合MybatisPlus基本的增删改查,保姆级教程

  MybatisPlus是国产的第三方插件, 它封装了许多常用的CURDapi,免去了我们写mapper.xml的重复劳动,这里介绍了基本的整合SpringBoot和基础用法。2|0引入依赖
  在项目中pom  文件引入mybatisplus  和mysql  驱动依赖,如下图             com.baomidou         mybatis-plus-boot-starter         3.5.1                     mysql          mysql-connector-java          8.0.26       3|0配置连接信息
  在项目中application.yaml文件中配置数据库的连接信息spring:   datasource:     driver-class-name: com.mysql.cj.jdbc.Driver     url: jdbc:mysql://127.0.0.1:3306/didiadmin?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true     username: root     password: 123456 4|0新建两个表
  本案例通过一个完整的业务流程来介绍如何使用mybatispuls  ,首先在数据库中新建两个表,一个是字典类型表sys_dict_type  和一个字典数据表sys_dict_data  CREATE TABLE `sys_dict_type` ( `id` CHAR (19) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT "标识", `type_name` VARCHAR (255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT "字典类型名称",  `type_code` VARCHAR (255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT "字典类型标识",  `description` VARCHAR (255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT "字典类型描述",  `enable` CHAR (1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT "是否启用",  `create_by` CHAR (19) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT "创建人ID",   `create_name` CHAR (19) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT "创建人名称",  `create_time` datetime DEFAULT NULL COMMENT "创建时间",  `update_by` CHAR (19) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT "修改人ID",  `update_name` CHAR (19) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT "修改人名称",  `update_time` datetime DEFAULT NULL COMMENT "修改时间",  `remark` VARCHAR (255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT "备注",  PRIMARY KEY (`id`) USING BTREE ) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC  CREATE TABLE `sys_dict_data` ( `data_id` CHAR (19) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT "标识", `data_label` CHAR (19) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT "字典标签",  `data_value` CHAR (20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT "字典值",  `type_code` CHAR (20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT "所属类型",  `is_default` CHAR (1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT "是否默认",  `update_by` CHAR (19) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT "修改人ID",    `update_name` CHAR (19) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT "修改人名称",  `update_time` datetime DEFAULT NULL COMMENT "修改时间",  `create_by` VARCHAR (255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT "创建人ID",    `create_name` CHAR (19) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT "创建人名称",  `create_time` datetime DEFAULT NULL COMMENT "创建时间",  `remark` VARCHAR (255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT "备注",  `enable` CHAR (1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT "是否启用",  PRIMARY KEY (`data_id`) USING BTREE ) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC 5|0在项目中创建相应的实体类
  通过观察SQL语句发现两个表中有很多相同的字段,所有我们把相同的字段抽离出来,放到一个基础的实体类中,其他实体类通过集成方式获取公共的字段。5|1创建基础实体类package com.didiplus.common.base;  import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data;  import java.io.Serializable; import java.time.LocalDateTime;  /** * Author: didiplus * Email: 972479352@qq.com * CreateTime: 2022/4/29 * Desc: 基 础 实 体 类 */  @Data public class BaseDomain implements Serializable {          /**     * 创建时间     */     @TableField(value = "create_time", fill = FieldFill.INSERT)     private LocalDateTime createTime;          /**     * 创建人     */     @TableField(value = "create_by", fill = FieldFill.INSERT)     private String createBy;          /**     * 创建人名称     */     @TableField(value = "create_name", fill = FieldFill.INSERT)     private String createName;          /**     * 修改时间     */     @TableField(value = "update_time", fill = FieldFill.UPDATE)     private LocalDateTime updateTime;          /**     * 修改人     */     @TableField(value = "update_by", fill = FieldFill.UPDATE)     private String updateBy;          /**     * 修改人名称     */     @TableField(value = "update_name", fill = FieldFill.UPDATE)     private String updateName;               /**     * 备注     */     private String remark; }
  @TableField 是mybatisplus中的一个注解,后面会讲解到的。
  基础实体类创建好了,接着我们把剩下的两个实体类也一同创建吧。5|2SysDictType实体类package com.didiplus.modules.sys.domain;  import com.didiplus.common.base.BaseDomain; import com.didiplus.common.base.ValidGroup; import io.swagger.annotations.ApiModel; import io.swagger.annotations.ApiModelProperty; import lombok.Data;  import javax.validation.constraints.*;  /**  * Author: didiplus  * Email: 972479352@qq.com  * CreateTime: 2022/4/25  * Desc: 字典类型领域模型  */  @Data @ApiModel(value = "字典类型") public class SysDictType extends BaseDomain {      /**      * 标识      */     @Null(groups = ValidGroup.Crud.Create.class)     @NotNull(groups = ValidGroup.Crud.Update.class,message = "字典ID不能为空")     @ApiModelProperty("ID")     private String id;      /**      * 字典名称      */     @NotBlank(message = "字典名称必填项")     @ApiModelProperty(value = "字典名称",example = "用户ID")     private String typeName;     /**      * 字典类型      */     @NotBlank(message = "字典编码不能为空")     @ApiModelProperty(value = "字典编码")     private String typeCode;     /**      * 字典描述      */     @ApiModelProperty(value = "字典描述")     private String description;     /**      * 字典可用状态      */     @NotBlank(message = "字典状态不能为空")     @ApiModelProperty(value = "字典状态")     private Boolean enable; }  5|3SysDictData实体类package com.didiplus.modules.sys.domain;  import com.baomidou.mybatisplus.annotation.TableField; import com.didiplus.common.base.BaseDomain; import com.didiplus.common.base.ValidGroup; import io.swagger.annotations.ApiModelProperty; import lombok.Data;  import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; import javax.validation.constraints.Null;  /**  * Author: didiplus  * Email: 972479352@qq.com  * CreateTime: 2022/4/29  * Desc: 字典值领域模型  */  @Data public class SysDictData extends BaseDomain {     /**      * id 编号      */     @Null(groups = ValidGroup.Crud.Create.class)     @NotNull(groups = ValidGroup.Crud.Update.class,message = "字典数据ID不能为空")     @ApiModelProperty("ID")     @TableField(value = "data_id")     private String dataId;     /**      * 字典显示      */     @NotBlank(message = "字典数据名称必填项")     @ApiModelProperty(value = "字典数据名称")     private String dataLabel;     /**      * 字典值      */     @NotBlank(message = "字典数据值不能为空")     @ApiModelProperty(value = "字典数据值")     private String dataValue;     /**      * 字典类型      */     @ApiModelProperty(value = "字典编码")     @NotBlank(message = "字典数据值不能为空")     private String typeCode;     /**      * 是否为默认      */     @ApiModelProperty(value = "字典编码")     @NotBlank(message = "字典数据值不能为空")     private String isDefault;      /**      * 是否启用      */     @NotBlank(message = "字典状态不能为空")     @ApiModelProperty(value = "字典数据状态")     private Boolean enable; } 6|0创建DAO继承MybatisPlus增强接口
  为两个实体类中分别添加DAO继承MybatisPlus增强接口,这样就可以集成了增删改查的功能了。6|1SysDictTypeMapperpackage com.didiplus.modules.sys.mapper;  import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.didiplus.modules.sys.domain.SysDictType; import org.apache.ibatis.annotations.Mapper;  /**  * Author: didiplus  * Email: 972479352@qq.com  * CreateTime: 2022/4/29  * Desc: 字典类型接口  */ @Mapper public interface SysDictTypeMapper extends BaseMapper { } 6|2SysDictDataMapperpackage com.didiplus.modules.sys.mapper;  import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.didiplus.modules.sys.domain.SysDictData; import org.apache.ibatis.annotations.Mapper;  /**  * Author: didiplus  * Email: 972479352@qq.com  * CreateTime: 2022/4/29  * Desc: 字典数据接口  */  @Mapper public interface SysDictDataMapper extends BaseMapper { } 7|0进一步封装到Service层7|1定义Service接口中的抽象方法SysDictDataServicepackage com.didiplus.modules.sys.service;  import com.baomidou.mybatisplus.extension.service.IService; import com.didiplus.modules.sys.domain.SysDictData;  /**  * Author: didiplus  * Email: 972479352@qq.com  * CreateTime: 2022/4/29  * Desc:  */  public interface SysDictDataService extends IService { } SysDictTypeServicepackage com.didiplus.modules.sys.service;  import com.baomidou.mybatisplus.extension.service.IService; import com.didiplus.modules.sys.domain.SysDictType;  /**  * Author: didiplus  * Email: 972479352@qq.com  * CreateTime: 2022/4/29  * Desc:  */ public interface SysDictTypeService extends IService { }  7|2实现Service接口中的方法SysDictTypeServiceImplpackage com.didiplus.modules.sys.service.impl;  import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.didiplus.modules.sys.domain.SysDictType; import com.didiplus.modules.sys.mapper.SysDictTypeMapper; import com.didiplus.modules.sys.service.SysDictTypeService; import org.springframework.stereotype.Service;  /**  * Author: didiplus  * Email: 972479352@qq.com  * CreateTime: 2022/4/29  * Desc:  */ @Service public class SysDictTypeServiceImpl extends ServiceImpl implements SysDictTypeService { }  SysDictDataServiceImplpackage com.didiplus.modules.sys.service.impl;  import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.didiplus.modules.sys.domain.SysDictType; import com.didiplus.modules.sys.mapper.SysDictTypeMapper; import com.didiplus.modules.sys.service.SysDictTypeService; import org.springframework.stereotype.Service;  /**  * Author: didiplus  * Email: 972479352@qq.com  * CreateTime: 2022/4/29  * Desc:  */ @Service public class SysDictTypeServiceImpl extends ServiceImpl implements SysDictTypeService { }  8|0在控制层上进行增删改查操作8|1SysDictTypeControllerpackage com.didiplus.modules.sys.controller;  import com.didiplus.common.base.ValidGroup; import com.didiplus.modules.sys.domain.SysDictType; import com.didiplus.modules.sys.service.SysDictTypeService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.v3.oas.annotations.parameters.RequestBody; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*;   /**  * Author: didiplus  * Email: 972479352@qq.com  * CreateTime: 2022/4/25  * Desc: 数据字典控制器  */ @RestController @Api(tags = "数据字典") @RequestMapping("/api/sys/dictType") public class SysDictTypeController {      @Autowired     SysDictTypeService sysDictTypeService;      @ApiOperation("字典添加")     @PostMapping("/add")     public String add(@Validated(value = ValidGroup.Crud.Create.class) @RequestBody SysDictType sysDictType) {         return  sysDictTypeService.save(sysDictType)? "添加成功":"添加失败";     }      @ApiOperation("字典修改")     @PutMapping("/edit")     public String edit(@Validated(value = ValidGroup.Crud.Update.class) @RequestBody SysDictType sysDictType) {         return  sysDictTypeService.updateById(sysDictType)? "修改成功":"修改失败";     }       @ApiOperation("字典删除")     @DeleteMapping("/del/{id}")     public  String del( @PathVariable String id) {         return  sysDictTypeService.removeById(id)? "删除成功":"删除失败";     }   } 体验效果新增数据
  修改数据
  删除数据
  9|0自动填充功能
  原理:实现元对象处理器接口:com.baomidou.mybatisplus.core.handlers.MetaObjectHandler  注解填充字段 @TableField(.. fill = FieldFill.INSERT)  生成器策略部分也可以配置!9|1自定义实现类 DomainInterceptorpackage com.didiplus.common.web.interceptor;  import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import org.apache.ibatis.reflection.MetaObject; import org.springframework.stereotype.Component;  import java.time.LocalDateTime;  /**  * Author: didiplus  * Email: 972479352@qq.com  * CreateTime: 2022/5/4  * Desc: 字 段 填 充 拦 截 器  */ @Component public class DomainInterceptor implements MetaObjectHandler {     @Override     public void insertFill(MetaObject metaObject) {         createField(metaObject);     }      @Override     public void updateFill(MetaObject metaObject) {         updateField(metaObject);     }      /**      * @Field 创建时间      * */     public void createField(MetaObject metaObject){         this.strictInsertFill(metaObject,"createTime", LocalDateTime.class,LocalDateTime.now());     }       /**      * @Field 修改时间      * */     public void updateField(MetaObject metaObject) {         this.strictUpdateFill(metaObject,"updateTime",LocalDateTime.class,LocalDateTime.now());     } } 10|0分页查询10|1添加分页插件package com.didiplus.common.config;  import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;  /**  * Author: didiplus  * Email: 972479352@qq.com  * CreateTime: 2022/5/4  * Desc: mybatis-plus分页插件  */ @Configuration public class MyBatisPlusConfig {      /**      * mybatis-plus分页插件      */     @Bean     public MybatisPlusInterceptor  mybatisPlusInterceptor() {         MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();         interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));         return interceptor;     } } 10|2定义分页接口package com.didiplus.modules.sys.service;  import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.didiplus.common.web.domain.PageDomain; import com.didiplus.modules.sys.domain.SysDictType;  /**  * Author: didiplus  * Email: 972479352@qq.com  * CreateTime: 2022/4/29  * Desc: 数据字典类型服务类  */ public interface SysDictTypeService extends IService {      IPage page(PageDomain pageDomain); } 10|3实现分页接口package com.didiplus.modules.sys.service.impl;  import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.didiplus.common.web.domain.PageDomain; import com.didiplus.modules.sys.domain.SysDictType; import com.didiplus.modules.sys.mapper.SysDictTypeMapper; import com.didiplus.modules.sys.service.SysDictTypeService; import org.springframework.stereotype.Service;  import javax.annotation.Resource;  /**  * Author: didiplus  * Email: 972479352@qq.com  * CreateTime: 2022/4/29  * Desc:  */ @Service public class SysDictTypeServiceImpl extends ServiceImpl implements SysDictTypeService {     @Resource     SysDictTypeMapper sysDictTypeMapper;     @Override     public IPage page(PageDomain pageDomain) {         IPage page = new Page<>(pageDomain.getPage(),pageDomain.getLimit());         return sysDictTypeMapper.selectPage(page,null);     } } 10|4控制层调用@RestController @Api(tags = "数据字典") @RequestMapping("/api/sys/dictType") public class SysDictTypeController {      @Autowired     SysDictTypeService sysDictTypeService;      @ApiOperation("字典分页查询")     @GetMapping     public IPage list(@RequestBody PageDomain pageDomain){         return sysDictTypeService.page(pageDomain);     } }
  PageDomain定义了分页接收的两个参数
  PageDomain类package com.didiplus.common.web.domain;  import lombok.Data;  /**  * Author: didiplus  * Email: 972479352@qq.com  * CreateTime: 2022/5/4  * Desc: 分 页 参 数 封 装  */ @Data public class PageDomain {     /**      * 当前页      */     private  Integer page;     /**      * 每页数量      */     private  Integer limit;  } 10|5体验效果
  下一篇,我们继续来学习mybatisPlus的代码生成器
  原文链接:SpringBoot整合MybatisPlus基本的增删改查,保姆级教程 - 北根娃 - 博客园

质感超群,显示出众,华为MateView显示器体验想要精致的高分辨率显示器?华为MateView显示器,或许是一个不错的选择,而如果要一个32比例的显示器呢?那它就是你唯一的选择。华为MateView显示器的外观让人看一眼就会爱上蔡崇信等当选阿里巴巴第一组董事,阿里成了名副其实的外企?欧界报道9月17日晚间,阿里巴巴在港交所发布公告,股东大会选举蔡崇信等三人各自担任公司第一组董事,三人均将任职三年至继承人获推选委任并获得适当资格为止。蔡崇信自1999年加入阿里巴续航400km配快充,丰田高配性能SUV,省钱空间大,实拍丰田CHREV丰田CHR丰田在混动方面的研究,可以说是登峰造极,双擎系列的车子在国内外的销量以及口碑都是不错的。除此之外,丰田其实对于纯电和纯氢的新能源汽车,也颇有心得,丰田Mirai就是旗下纯iOS15更新在即,但我劝你等等苹果在本周的iPhone13发布会中宣布,iOS15和iPadOS15将于9月20日星期一推送,届时用户可以在iphone及ipad上下载并更新。据此前消息,IOS15首次开放了F又有新配色了!索尼暗黑版PS5曝光这波营销有点强9月18日消息,据外媒Notebookcheck报道,索尼前不久推出的午夜黑配色PULSE3D耳机只是打头阵,这暗示着索尼将推出暗黑色PlayStation5主机。该配色主机或于明锐龙5800x搭配RTX3060Ti永劫无间游戏直播电脑配置单永劫无间作为一款国风版的吃鸡游戏,一经上线就收获了很多粉丝用户,游戏主播们也纷纷加入到这款游戏中。下面电脑配置网就为大家带来一套可以直播永劫无间的配置单。根据官方推荐配置,永劫无间游戏音乐两不误,性价比炸裂雷柏VM700S游戏耳机真无线耳机的出现,真的是给喜欢随身听歌游戏通话的人群来说实在是太方便了,想当初还是插3。5mm手机接口的线控耳麦,真无线的普及也是因为手机取消了3。5mm接口的大部分原因。随着各家内耳式助听器跟中耳炎有什么关系?您好,一般有中耳炎患者建议选配耳背式助听器,不容易导致中耳炎发作,可以到专业的听力机构中心了解在患中耳炎时佩戴耳内式助听器使耳内空气不流通,会加重中耳炎。助听器本身是不会造成中耳炎家庭装修投影的体验如何?客厅适合哪个牌子的投影仪?如今许多家庭都会选择在自己的客厅里安装投影仪,追求极致的大屏体验。但是在装修时往往没有经验,今天就让小编和大家分享一下装修投影仪案例,家庭装修投影的体验如何?客厅适合哪个牌子的投影WhatsApp云控宣布开放协议端口,可实现大批量群发9月11日,Facebook旗下即时通讯软件WhatsApp宣布未来几周内推出聊天记录云备份服务,iOS和Android用户均可使用。据了解,WhatsApp聊天记录云备份采用端对IDEA的5大调试技(非常实用)在项目开发的时候我发现很多小伙伴能非常熟练的使用IDEA编写代码,但是对于IDEA调试的技巧掌握的不是很好,只会F7F8F9等这些基本调试功能。而像一些复杂的调试场景就无从下手,如
特斯拉惊人的纯利率让全球智能汽车企业倍感压力2022年一季度,特斯拉营收187。56亿美元,净利润33亿美元,净利率是17。6。再看看全球汽车企业的情况,蔚来毛利率20,理想毛利率20,小鹏13,大众17。5,宝马17。6。台积电救火,消息称骁龙8Gen1性能提升10,发热续航改善高通这两年的旗舰移动平台,从骁龙888开始然后是骁龙888,到最新的骁龙8Gen1,都选择了三星作为代工厂,骁龙8Gen1还首发三星4nm工艺。高通曾长期是台积电晶圆代工的最大客户数据防泄露技术为数据安全紧弦TMT前沿随着数据安全法个人信息保护法等实施,进一步推动了数据安全体系的建设和发展。解决数据安全问题,特别是数据泄露问题,备受行业关注。作为一个比较成熟的技术,数据防泄露(Data钉子户最爱!三款公认很耐用的手机,就算用5年依然流畅近年来手机界的钉子户比之前几年少了好多,一方面是因为现在智能机的更新迭代太快,一年可以发布十多部不同类型的手机另一方面是因为现在的手机在更新迭代时做出的改变微乎其微,对消费者来书并顺风车碳减排团标公布,合乘出行减排量评估有了技术规范私人小客车合乘出行项目温室气体减排量评估技术规范(下称规范)全文4月25日对外公布,规范为私人小客车合乘出行项目的温室气体减排量评估提供了技术规范。这也是顺风车领域首个碳减排团体标氢能汽车和纯电汽车相比有什么优势?氢燃料电池车是指以氢燃料电池为动力的车,氢与氧的化学反应产生会产生大量的能量,从而为汽车提供源源不断的动力。与传统的汽车相比,氢燃料电池车补充燃料时间短能量密度大,并且排放物为水,小鹏汽车开始向欧美出口,新车价格和国内差了10万现在出国销售的车企越来越多了,我们知道的有比亚迪,长城汽车,现在小鹏汽车也开始向外输出新车了。此次出海的新车是小鹏P5,我们都知道小鹏P5在国内的厂家指导价为17。79到24。29未来时代最佳的轻生产力工具iPad(附购买建议)1前言鲁迅先生曾经说过男人两大爱好,拉良家妇女下水,劝风尘女子从良。这句话映射到数码科技圈,也同样适用。消费者在开心使用iPad的时候,还不忘啐口唾沫呸,买前生产力,买后爱奇艺。事强烈建议特斯拉取消单踏板模式关于特斯拉的新闻,尤其是负面的新闻,总是会在第一时间冲上热搜榜。没错,对于特斯拉这样的品牌来说,这是其必然要经历的。事实上,十几年前的苹果手机,也同样有着类似的待遇。这就是创新者必女性手机该怎么选,2022年主流品牌热门推荐记得在功能机时代,还有不少针对女性市场的手机品牌,那时候选择手机只要看颜值就够了,功能上一般也玩不出新花样。如今来到智能机时代,并没有哪个厂商说自己是女性手机品牌,但是对于女性的需想入新能源汽车行业,我为什么推荐华南理工大学(之二)?点击蓝字轻松关注专注高考志愿填报指导孩子们做好学业规划高考倒计时40天志愿填报找勋哥昨天和大家分享了华南理工大学中与新能源车产业有关的专业,今天,接着这个话题,集中来谈谈,华南理工