Mybatisday02

特殊情况示栗:

修改实体类

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 + '\'' +
                '}';
    }
}

image

我们运行 findAll() 查询结果如下

image

查出上面结果的原因是数据库字段与实体类没有对应, 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}
    




    

    


你可能感兴趣的:(Mybatisday02)