MyBatis:映射文件


点击查看代码
<?xml version="1.0" encoding="UTF-8" ?>



    

    

    
    
        insert into Employee(empName,empSex,empPhone,hireDate) values (#{empName},#{empSex},#{empPhone},#{hireDate})
    

    
        delete from Employee where id=#{id}
    

    
        update Employee set empName=#{empName},empSex=#{empSex},empPhone=#{empPhone},hireDate=#{hireDate} where id=#{id}
    

参数处理

1、单个参数

mybatis不做特殊处理,使用#{参数名},取出参数值。

2、多个参数

mybatis会做特殊处理,多个参数会被封装为一个map。
key:param1,param2...
value:传入的参数值
所以需要使用#{param1}取出对应的参数值

3、多个参数建议处理方式

使用@Param注解对参数进行标注
Employee getEmployeeById(@Param("id") int id);
然后使用#{参数名},取出参数值

4、#{}与${}区别

'#{}':是以预编译的形式,将参数设置到sql中,防止sql注入。
${}:取出的值直接封装到sql语句中,存在注入漏洞的安全问题。${}主要用于拼接模糊查询,例如

   

注意:常见报错
Caused by: org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'empName' in 'class java.lang.String'
原因:
处理方式: