小知识,大挑战!本文正在参与“程序员必备小知识”创作活动
本文同时参与 「掘力星计划」 ,赢取创作大礼包,挑战创作激励金
更新操作
update更新
//测试更新
@Test
public void testUpdate(){
User user = new User();
user.setId(6L);
user.setName("xxx很牛逼!");
//注意:updateById,但是参数是一个对象
int result = userMapper.updateById(user);
System.out.println(result);
System.out.println(user);
}
复制代码
自动拼接sql
所有的sql都是自动生成的
自动填充
创建时间、修改时间!这些操作都是自动化完成的,我们不希望手动更新!
方式一数据级别(不建议使用)
1,在表中新增字段create_time,update_time
记得选择默认值
2、再次测试插入方法,我们需要先把实体类同步
//对应数据库中的主键(uuid,自增id,雪花算法、redis,zookeeper)
@TableId(type = IdType.INPUT )
private Long id;
private String name;
private Integer age;
private String email;
private Date create_time;
private Date update_time;
复制代码
3、再次更新查看结果即可
方式二:代码级别(推荐)
1、删除数据库的默认值,更新操作!
2、实体类的字段上加注解
//字段添加填充内容
@TableField(fill = FieldFill.INSERT)
private Date create_time;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date update_time
复制代码
3、编写处理器来处理这个注解即可!
@Slf4j //开启日志
@Component //加入springioc容器
public class MyMetaObjectHandler implements MetaObjectHandler {
//插入时候的填充策略
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill....");
this.setFieldValByName("create_time",new Date(),metaObject);
this.setFieldValByName("update_time",new Date(),metaObject);
}
//更新时的填充策略
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill....");
this.setFieldValByName("update_time",new Date(),metaObject);
}
}
复制代码
## 小提示
开发中难免会遇到这个这个注解@Component
@Controller 控制器(注入服务)
用于标注控制层,相当于struts中的action层
@Service 服务(注入dao)
用于标注服务层,主要用来进行业务的逻辑处理
@Repository(实现dao访问)
用于标注数据访问层,也可以说用于标注数据访问组件,即DAO组件
.
@Component (把普通pojo实例化到spring容器中,相当于配置文件中的 )
泛指各种组件,就是说当我们的类不属于各种归类的时候(不属于@Controller、@Services等的时候),我们就可以使用@Component来标注这个类。
复制代码