mybatis-plus.configuration.call-setters-on-nulls
时间: 2024-05-27 09:09:01 浏览: 210
mybatis-plus.configuration.call-setters-on-nulls 是MyBatis-Plus的一个配置项,用于控制是否在执行SQL时为null的值调用setter方法。默认情况下,MyBatis-Plus会为null值调用setter方法,以便在执行SQL时使用默认值或null值。如果将该配置项设置为false,则不会调用setter方法。
例如,假设有一个User实体类,其中有一个name属性和一个age属性。如果将call-setters-on-nulls设置为true,则当执行SQL时,如果name或age为null,则会自动调用对应的setter方法。如果将其设置为false,则不会调用setter方法,而是将null值传递给SQL语句。
这个配置项的具体使用方式可以参考MyBatis-Plus的官方文档。
相关问题
mybatis-plus: global-config: # 控制台 不打印 mybatis-plus 的 LOGO banner: false configuration: map-underscore-to-camel-case: true # 如果查询结果中包含空值的列,则 MyBatis 在映射的时候,不会映射这个字段 call-setters-on-nulls: true # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
这段代码是Mybatis-Plus的全局配置,包括以下几个方面:
1. 控制台不打印Mybatis-Plus的LOGO,即启动应用时不显示Mybatis-Plus的logo。
2. 将数据库中下划线命名方式转换为Java驼峰命名方式,例如:user_name转为userName。
3. 如果查询结果中包含空值的列,则Mybatis在映射的时候,不会映射这个字段。
4. 打印执行的SQL语句,方便开发或测试时调试。
其中,map-underscore-to-camel-case是Mybatis-Plus的一个特性,可以自动将数据库中下划线命名方式转换为Java驼峰命名方式,避免手动转换的繁琐和错误。
call-setters-on-nulls是Mybatis的一个配置,表示如果查询结果中包含空值的列,则会通过setter方法将该字段的值设置为null,避免空指针异常。
log-impl表示打印执行的SQL语句的日志实现方式,这里是将日志打印到控制台上。
springboot+mybatis-plus+Ajax+layui+mysql实现员工注册(id自增,姓名,年龄,性别,部门,入职时间,密码)
首先,我们需要创建一个员工实体类,包含上述属性。假设这个实体类的名字为Employee。
```
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Employee {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String sex;
private String department;
private Date hireDate;
private String password;
}
```
在pom.xml文件中加入以下依赖:
```xml
<!-- springboot -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- mybatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>latest-version</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.22</version>
</dependency>
<!-- layui -->
<dependency>
<groupId>com.clay</groupId>
<artifactId>layui-spring-boot-starter</artifactId>
<version>latest-version</version>
</dependency>
```
配置Mybatis-plus的分页插件、数据源和Mapper扫描路径。在application.yml文件中加入以下配置:
```yml
mybatis-plus:
mapper-locations: classpath:mapper/*.xml
type-aliases-package: com.example.demo.entity.*
global-config:
db-config:
id-type: auto
table-prefix: emp_
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
map-undeserialized-object: true
use-generated-keys: true
default-fetch-size: 1000
default-statement-timeout: 30000
use-column-label: true
call-setters-on-nulls: true
plugins:
- com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor
spring:
datasource:
url: jdbc:mysql://localhost:3306/demo?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
hikari:
maximum-pool-size: 5
minimum-idle: 5
auto-commit: true
idle-timeout: 180000
mybatis:
mapper-locations: classpath:mapper/**/*.xml
type-aliases-package: com.example.demo.entity.*
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
```
创建Mapper接口,用于对Employee的增删改查操作。
```java
@Mapper
public interface EmployeeMapper extends BaseMapper<Employee> {
}
```
创建Controller类,包含员工注册的接口方法。
```java
@RestController
@RequestMapping("/employee")
public class EmployeeController {
@Autowired
private EmployeeMapper employeeMapper;
@PostMapping("/register")
public Object register(@RequestBody Employee employee) {
employeeMapper.insert(employee);
return Result.success();
}
}
```
在前端页面中,使用Layui框架实现员工注册的表单页面。在JavaScript代码中使用Ajax提交表单数据。
```html
<div class="layui-form-item">
<label class="layui-form-label">姓名</label>
<div class="layui-input-inline">
<input type="text" name="name" id="name" required
lay-verify="required" autocomplete="off"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">年龄</label>
<div class="layui-input-inline">
<input type="number" name="age" id="age" required
lay-verify="required|number" autocomplete="off"
class="layui-input">
</div>
</div>
<div class="layui-form-item">
<label class="layui-form-label">性别</label>
<div class="layui-input-inline">
<select name="sex" id="sex" required lay-verify="required">
<option value="">请选择</option>
<option value="male">男</option>
<option value="female">女</option>
</select>
</div>
</div>
<!-- 其他表单项略 -->
<button class="layui-btn" onclick="register()">注册</button>
<script>
function register() {
$.ajax({
type: "POST",
url: "/employee/register",
data: $("#form").serialize(),
dataType: "json",
success: function (data) {
if (data.code === 0) {
layer.msg("注册成功!");
} else {
layer.msg("注册失败!");
}
},
error: function () {
layer.msg("请求失败!");
}
});
}
</script>
```
阅读全文