资源贴:https://blog.csdn.net/wrongyao/article/details/81277066
1、根据资源贴可以搭起spring和mybatis整合的demo
2、使用mybatis的mapper.xml需要注意,xml的一定要和mapper接口放在同一个包中,而且xml文件要和mapper接口同名,因为mybatis是通过mapper接口来扫描xml文件的。下位项目目录结构。
3、mapper接口
在mybatisConfig中需要配置mapperSacn("com.honor.*")扫描mapper接口
package com.honor.mapper;
import com.honor.model.SysUser;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* Created by rongyaowen
* on 2018/11/28.
*/
public interface SysUserMapper {
public int insert(SysUser sysUser);
public int delete(SysUser sysUser);
public int update(SysUser sysUser);
public SysUser selectById(Long id);
public List selectAll();
public List selectByUserNameAndPassword(String userName, String password);
}
4、mapper.xml配置文件
INSERT INTO `sys_user` (
sys_user_id,
user_name,
PASSWORD,
email,
create_time,
head_img
)
VALUES(
null,
#{userName},
#{password},
#{email},
SYSDATE(),
#{headImg}
);
DELETE
FROM
sys_user
WHERE
sys_user_id = #{sysUserId}
UPDATE sys_user
SET email = #{email}
WHERE
sys_user_id = #{sysUserId}
注:需要注意<mapper>根标签 namespace 属性。当 app 接口和XML文件关联的时候,命名空间口 amespace 值就需要配置
成接口的全限定名称,例如 UserMapper 接口对应的 tk mybat simple .mapper . UserMapper, is 内部就是通过这个值将接口和
XML关联起来的。
5、赋值方式:#{}和${}
5.1 当mapper方法只需要传入一个值的时候,如上述的selectById(long id)需要传入id ,xml文件中可以通过#{id}直接取值,${id}
不能取值,可以通过${value}或${_parameter}取值;或者加上@param注解(public SysUser seleteById(@Param("id") Long id);)
这样可以通过#{id}和${id}都可以取到值。
5.2 当mapper方法需要传入多个值的时候,如selectByUserNameAndPassword(String userName, String password);必须通过@param注解,否者#{}或${}都取不到值;需要注意的是用${}的时候需要加 ' 号,因为它是原样替换,不建议使用
List
5.3 #{}预编译sql可以防止sql注入,${}简单的字符串替换,不能防止sql注入。