ID 为空,才自动填充。..., value 为字段值 null2IsNull : 为 true 则在 map 的 value 为 null 时调用 isNull 方法,为 false 时则忽略 value 为 null 的 例...自动填充功能 有些时候我们可能会有这样的需求,插入或者更新数据时,希望有些字段可以自动填充数据,比如密码、version 等。在MP中提供了这样的功能,可以实现自动填充。...添加@TableField注解 @TableField (fill = FieldFill.INSERT) //插入数据时进行填充 private String password; 为password添加自动填充功能...INSERT, /** * 更新时填充字段 */ UPDATE, /** * 插入和更新时填充字段 */ INSERT_UPDATE } 编写MyMetaObjectHandler
springmvc所支持的参数绑定: 1、默认支持很多类型:HttpServletRequest、response、session、 model/modelMap将模型数据填充到request域;...@RequestParam的属性required设置为true,表示该参数必须传入。属性defalutValue可以设置默认值,如果参数没有传入,将默认值传入。 3、支持pojo类型。...只要保证页面提交的request提交的参数名和pojo中的属性一致,自动将request请求的参数设置到pojo的属性中。 注意:形参中既有pojo类型又有简单类型,参数绑定互不影响。... ...包装类型pojo的参数绑定: 在形参中让包装类型的pojo(pojo中包含pojo)接收查询条件参数。
;defaultValue:默认值,表示如果请求中没有同名参数时的默认值 图片 形参名称时items_id,但是这里使用的是value=”id”,限定请求的参数名是id 7 @Validated和...默认对pojo数据进行回显,pojo数据传入controller方法后,springmvc自动将pojo数据放到request域,key等于pojo类型(首字母小写) 使用@ModelAttribute... ,@component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注 11 @Scope spring中bean的scope属性,有如下5种类型...: singleton 表示在spring容器中的单例,通过spring容器获得该bean时总是返回唯一的实例 prototype表示每次获得bean都会生成一个新的对象 request表示在一次http...,初始化Spring容器 13 @JSONField(serialize = false) @JSONField(serialize = false)时用来忽略不想序列化的字段的,但是如果加了final
也就是公共字段自动填充的功能。一般满足下面条件的字段就可以使用此功能: 这个字段是大部分表都会有的。 这个字段的值是固定的,或则字段值是可以在后台动态获取的。...如果是之前配置过MybatisPlus的同学只需要添加以下几个步骤: 继承IMetaObjectHandler抽象类,实现insertFill()新增数据时需要填充的字段设置和updateFill()更新数据的时候需要填充的字段设置这两个方法...(); //配置公共字段自动填写 globalConfig.setMetaObjectHandler(new MyMetaObjectHandler()); 也就是将刚刚写的公共字段填充的设置设置到MP...会验证你所传的属性是否为空,来判断是否该更新和插入这个属性,这个就和公共字段自动填充相冲突了,所以需要这个注解来标识此属性不需要验证。...的配置文件中公共字段生成类的bean //2.实现IMetaObjectHandler类 //3.忽略对应字段的为空检测,在pojo类的属性上添加@TableField(value="last_update_name_id
描述 value String 否 “” 主键字段名 type Enum 否 IdType.NONE 主键类型 type中主键类型: 一共有三种策略: 数据库ID自增 该类型为未设置主键类型...此属性在 MyBatis 中原默认值为 false,在 MyBatis-Plus 中默认开启 如果数据库命名符合规则无需使用 @TableField 注解指定数据库字段名 #关闭自动驼峰映射,该参数不能和..., value 为字段值 null2IsNull : 为 true 则在 map 的 value 为 null 时调用 isNull 方法,为 false 时则忽略 value 为 null 的 案例...有些时候我们可能会有这样的需求,插入或者更新数据时,希望有些字段可以自动填充数据,比如密码、version等。...enum FieldFill { // 默认不处理 DEFAULT, // 插入时填充字段 INSERT, // 新时填充字段 UPDATE, // 插入和更新时填充字段 INSERT_UPDATE
官方文档里说首先需要加@TableField注解并指定fill的值 对应的值在com.baomidou.mybatisplus.annotation.FieldFill这个枚举里 例如我这里gmtCreate字段需要在新增的时候自动填充...,就使用FieldFill.INSERT 然而我需要让gmtModified字段在新增和修改的时候都自动填充,就使用FieldFill.INSERT_UPDATE 不过,加了注解后咱们还得去注入一个com.baomidou.mybatisplus.core.handlers.MetaObjectHandler...metaObjectHandler() { return new MetaObjectHandler() { /** * 插入元对象字段填充...(用于更新时对公共字段的填充) * * @param metaObject 元对象 */ @Override...进gmtModified对应字段,这里是一行写法,中间参数可缩写为LocalDateTime::now this.strictUpdateFill(metaObject,
一、背 有些业务场景下需要将 Java Bean 转成 Map 再使用。 本以为很简单场景,但是坑很多。...但使用 JSON 将 Java Bean 转 Map 会导致部分数据类型丢失。...如使用 fastjson ,当属性为 Long 类型但数字小于 Integer 最大值时,反序列成 Map 之后,将变为 Integer 类型。 maven 依赖: <!...如果想严格和属性保持一致,可以使用反射获取属性名和属性值,加缓存机制提升解析的效率。 四、总结 Java Bean 转 Map 的坑很多,最常见的就是类型丢失和属性名解析错误的问题。...大家在使用 JSON 框架和 Java Bean 转 Map 的框架时要特别小心。 平时使用某些框架时,多写一些 DEMO 进行验证,多读源码,多调试,少趟坑。 ----
mybatis-plus之后 pojo-dao(连接mybatis, 配置mapper.xml文件)service-controller 使用mybatis-plus之后 pojo mapper接口 package...user.setAge(19); user.setEmail("2460798168@qq.com"); userMapper.insert(user); } 数据库插入的id的默认值为..., metaObject); this.setFieldValByName("updateTime", new Date(), metaObject); } //更新时的填充策略...导入插件 @Bean @Profile({"dev", "test"}) //设置 dev text 环境开启, 保障我们的效率 public PerformanceInterceptor...("ze_");//设置表前缀不生成 strategy.setColumnNaming(NamingStrategy.underline_to_camel);//数据库表字段映射到实体的命名策略
一、背景 有些业务场景下需要将 Java Bean 转成 Map 再使用。 本以为很简单场景,但是坑很多。...但使用 JSON 将 Java Bean 转 Map 会导致部分数据类型丢失。...如使用 fastjson ,当属性为 Long 类型但数字小于 Integer 最大值时,反序列成 Map 之后,将变为 Integer 类型。 maven 依赖: <!...如果想严格和属性保持一致,可以使用反射获取属性名和属性值,加缓存机制提升解析的效率。 四、总结 Java Bean 转 Map 的坑很多,最常见的就是类型丢失和属性名解析错误的问题。...大家在使用 JSON 框架和 Java Bean 转 Map 的框架时要特别小心。平时使用某些框架时,多写一些 DEMO 进行验证,多读源码,多调试,少趟坑。
Spring Boot集成使用 导入依赖 <!...* SQL执行效率插件 可以由此查看每个SQL语句的执行效率,可以进行SQL优化 */ @Bean @Profile({"dev","test"})// 设置 dev...(),metaObject); this.setFieldValByName("updateTime",new Date(),metaObject); } // 更新时的填充策略...Version注解 private Integer version; @TableLogic //逻辑删除 private Integer deleted; // 字段添加填充内容...(true); // 自动lombok; strategy.setLogicDeleteFieldName("deleted"); //配置逻辑删除的字段名 // 自动填充配置
10、@Primary 自动装配时当出现多个Bean候选者时,被注解为@Primary的Bean将作为首选者,否者将抛出异常。...在model中存在以后,请求中所有名称匹配的参数都会填充到该参数中。这在Spring MVC中被称为数据绑定,一个非常有用的特性,节约了你每次都需要手动从表格数据中转换这些字段数据的时间。...用在方法上,则默认依赖类为方法的返回类型 @ConditionalOnClass,指定类在classpath上时,才初始化当前bean。...用在方法上,则默认依赖类为方法的返回类型 @ConditionalOnMissingClass,指定类不在classpath上时,才初始化当前bean。...如果一个属性并非数据库表的字段映射,就务必将其标注为@Transient,否则,ORM框架默认将其注解为@Basic。 7、@Basic @Basic 是实体类与数据库字段映射时最简单的类型。
mybatis-plus:自动填充功能 首先先了解一下那些需要自动填充,阿里巴巴开发手册建议每一张表都要有create_time和update_time字段 那么如果对每张表都去操作这两个字段的话会非常的繁琐...自动填充有两种实现方式,一种数据库层面实现,一种编程实现 先说说数据库层面如何实现,将创建时间(create_time)字段的默认值设置为:CURRENT_TIMESTAMP ,或者在sql中设置值,这大大的增加了数据库的压力...,不建议这样使用(如果十分抗揍也不是不可以这样做) 编程实现:作为一个优秀的框架增强器,mybatis-plus肯定不希望开发人员把时间和精力花在重复的事情上,mybatis-plus提供了自动填充功能..., 首先在pojo实体类中把需要填充的属性打上@TableField注解 @TableField(fill = FieldFill.INSERT)//写入时填充 private Date createTime...Date(),metaObject); this.setFieldValByName("updateTime",new Date(),metaObject); } //更新时的填充策略
这里我们重点说一下 Model/ModelMap,ModelMap是Model接口的一个实现类,作用是将Model数据填充到request域,即使使用Model接口,其内部绑定还是由ModelMap来实现...要用单引号括起来 八、boolean,只有两个值“true”和“false”,默认值为false,不能用0或非0来代替,这点和C语言不同 我们以 int 类型为例: JSP 页面代码: <form...JSP 页面:注意属性name的命名,User.java 的复合属性名.字段名 ? Controller ? ... 解决办法:改为 readonly="readonly" readonly:针对input(text / password)和textarea有效,在设置为true的情况下,用户可以获得焦点,但是不能编辑...disabled:针对所有表单元素(select,button,input,textarea等),在设置为disabled为true的情况下,表单输入项不能获得焦点,用户的所有操作无意义,在提交表单时,
如果属性是可变的,我们直接设置字段。 如果属性是不可变的,我们将使用持久性操作(请参阅对象创建)使用的构造函数来创建实例的副本。 默认情况下,我们直接设置字段值。...即使意图是计算应该是首选,重要的是此构造函数也将age作为参数(可能会忽略它),否则属性填充步骤将尝试设置年龄字段并由于它不可变且没有with…方法而失败在场。...该comment属性是可变的,通过直接设置其字段来填充。...的remarks特性是可变的,并且通过设置填充comment直接字段或通过调用用于setter方法 该类公开了一个工厂方法和一个用于创建对象的构造函数。...当 Spring Data 检测到具有参数默认值的构造函数时,如果数据存储不提供值(或简单地返回null),它就会使这些参数不存在,因此 Kotlin 可以应用参数默认值。
POJO实质上可以理解为简单的实体类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表,对于广大的程序员,可以很方便的将POJO类当做对象来进行使用,当然也是可以方便的调用其get,set方法。...在使用@Autowired时,首先在容器中查询对应类型的bean 如果查询结果刚好为一个,就将该bean装配给@Autowired指定的数据 如果查询的结果不止一个,那么@Autowired会根据名称来查找...解决方法是:使用required=false 可以提供了一个@Qualifier(“xxx”)标记,来指定需要装配bean的名称 // 初始化时,在spring容器中寻找一个类型为UserService...Configuration+@EnableAutoConfiguration @ConfigurationProperties 将外部配置文件(比如test.properties/test.yml)加载进来,填充对象的对应字段的数据...属性setter方法,并表示受影响的bean属性必须在XML配置文件在配置时进行填充。
上面的生成器将被配置为像这样的 bean 引用: 示例 10....除非已经由实体的构造函数填充(即通过其构造函数参数列表使用),否则将首先填充标识符属性以允许解析循环对象引用。之后,在实体实例上设置所有尚未由构造函数填充的非瞬态属性。...该类公开了一个withId(…)用于设置标识符的方法,例如,当将实例插入数据存储并生成标识符时。Person创建新实例时,原始实例保持不变。...该comment属性是可变的,通过直接设置其字段来填充。...remarks属性是可变的,并且可以通过直接设置字段comment或调用 setter 方法来填充 该类公开了一个工厂方法和一个用于创建对象的构造函数。
Autowired private UserMapper userMapper; @Test void contextLoads() { // 参数是一个 Wrapper ,条件构造器,这里我们先设置条件为空...看到id会自动填充。数据库插入的id的默认值为:全局的唯一id 主键生成策略 1)主键自增 1、实体类字段上 @TableId(type = IdType.AUTO) 2、数据库id字段设置为自增!...2、实体类字段属性上需要增加注解 // 字段添加填充内容 @TableField(fill = FieldFill.INSERT) private Date gmt_create...,metaObject); this.setFieldValByName("gmt_modified",new Date(),metaObject); } // 更新时的填充策略...1、导入插件 /** * SQL执行效率插件 */ @Bean @Profile({"dev","test"})// 设置 dev test 环境开启,保证我们的效率
Autowired private UserMapper userMapper; @Test void contextLoads() { // 参数是一个 Wrapper ,条件构造器,这里我们先设置条件为空...数据库插入的id的默认值为:全局的唯一id 主键生成策略 1)主键自增 1、实体类字段上 @TableId(type = IdType.AUTO) 2、数据库id字段设置为自增!...2、实体类字段属性上需要增加注解 // 字段添加填充内容 @TableField(fill = FieldFill.INSERT) private Date gmt_create...,metaObject); this.setFieldValByName("gmt_modified",new Date(),metaObject); } // 更新时的填充策略...1、导入插件 /** * SQL执行效率插件 */ @Bean @Profile({"dev","test"})// 设置 dev test 环境开启,保证我们的效率
ref="mongoClient"/> 其他创建时可能会想设置可选属性...默认值是使用 的WriteResultChecking值NONE。...下面概述了_id在使用MappingMongoConverter(默认为MongoTemplate)时对映射到文档字段的属性进行的类型转换(如果有)。...如果可能,在 Java 类中id声明为 a的属性或字段通过使用 SpringString转换为并存储为 an 。有效的转换规则委托给 MongoDB Java 驱动程序。...查询和更新时,MongoTemplate使用与上述规则对应的转换器来保存文档,以便查询中使用的字段名称和类型可以匹配域类中的内容。
领取专属 10元无门槛券
手把手带您无忧上云