特殊情况示栗:
修改实体类
package com.neusoft.domain;
import java.io.Serializable;
import java.util.Date;
/**
* @author Eric Lee
* @date 2020/9/3 09:45
*/
public class User implements Serializable {
private Integer userId;
private String userName;
private Date userBirthday;
private String userSex;
private String userAddress;
public Integer getUserId() {
return userId;
}
public void setUserId(Integer userId) {
this.userId = userId;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public Date getUserBirthday() {
return userBirthday;
}
public void setUserBirthday(Date userBirthday) {
this.userBirthday = userBirthday;
}
public String getUserSex() {
return userSex;
}
public void setUserSex(String userSex) {
this.userSex = userSex;
}
public String getUserAddress() {
return userAddress;
}
public void setUserAddress(String userAddress) {
this.userAddress = userAddress;
}
@Override
public String toString() {
return "User{" +
"userId=" + userId +
", userName='" + userName + '\'' +
", userBirthday=" + userBirthday +
", userSex='" + userSex + '\'' +
", userAddress='" + userAddress + '\'' +
'}';
}
}
我们运行 findAll() 查询结果如下
查出上面结果的原因是数据库字段与实体类没有对应, usename可以封装原因是window系统mysql数据不区分大小写
解决方案1查询时候起别名
解决方案2 使用resultMap
完整的IUserDao.xml
-- 配置保存时获取插入id keyColumn数据库中的列名 keyProperty实体类
select last_insert_id();
insert into user (username, birthday, sex, address)
values (#{userName},#{userBirthday} ,#{userSex},#{userAddress})
update user set username = #{userName},birthday=#{userBirthday},
sex=#{userSex}, address=#{userAddress} where id = #{userId}
delete from user where id = #{id}
面试题 #{} 与${} 区别
{} 表示一个占位符号
通过#{}可以实现 preparedStatement 向占位符中设置值,自动进行 java 类型和 jdbc 类型转换,
{}可以有效防止 sql 注入。 #{}可以接收简单类型值或 pojo 属性值。 如果 parameterType 传输单个简单类型值,#{}括号中可以是 value 或其它名称。
[图片上传失败...(image-947738-1599438087294)]
{}可以将 parameterType 传入的内容拼接在 sql中且不进行 jdbc 类型转换, [图片上传失败...(image-82ec10-1599438087294)]
{}括号中只能是 value
在sqlmapconfigure.xml中配置参数别名
对应的IUserDao.xml
-- 配置保存时获取插入id keyColumn数据库中的列名 keyProperty实体类
select last_insert_id();
insert into user (username, birthday, sex, address)
values (#{userName},#{userBirthday} ,#{userSex},#{userAddress})
update user set username = #{userName},birthday=#{userBirthday},
sex=#{userSex}, address=#{userAddress} where id = #{userId}
delete from user where id = #{id}