资源贴:https://blog.youkuaiyun.com/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<SysUser> selectAll();
public List<SysUser> selectByUserNameAndPassword(String userName, String password);
}
4、mapper.xml配置文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.honor.mapper.SysUserMapper">
<resultMap id="BaseResultMap" type="com.honor.model.SysUser">
<id column="sys_user_id" property="sysUserId" jdbcType="INTEGER"/>
<result column="user_name" property="userName" jdbcType="VARCHAR"/>
<result column="password" property="password" jdbcType="VARCHAR"/>
<result column="email" property="email" jdbcType="INTEGER"/>
<result column="head_img" property="headImg" jdbcType="VARCHAR"/>
</resultMap>
<insert id="insert">
INSERT INTO `sys_user` (
sys_user_id,
user_name,
PASSWORD,
email,
create_time,
head_img
)
VALUES(
null,
#{userName},
#{password},
#{email},
SYSDATE(),
#{headImg}
);
</insert>
<delete id="delete">
DELETE
FROM
sys_user
WHERE
sys_user_id = #{sysUserId}
</delete>
<update id="update">
UPDATE sys_user
SET email = #{email}
WHERE
sys_user_id = #{sysUserId}
</update>
<select id="selectById" resultMap="BaseResultMap">
SELECT
*
FROM
sys_user
WHERE
sys_user_id = #{id};
</select>
<select id="selectAll" resultMap="BaseResultMap">
SELECT
*
FROM
sys_user
</select>
<select id="selectByUserNameAndPassword" resultMap="BaseResultMap">
SELECT
*
FROM
sys_user
WHERE
user_name = #{userName}
AND
password = #{password}
</select>
</mapper>
注:需要注意<mapper>根标签 namespace 属性。当 app 接口和XML文件关联的时候,命名空间口 amespace 值就需要配置
成接口的全限定名称,例如 UserMapper 接口对应的 tk mybat simple .mapper . UserMapper, is 内部就是通过这个值将接口和
XML关联起来的。
<resultMap> 用来配置java对象字段和数据表的字段的对应关系。
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<SysUser> sysUsers = sysUserMapper.selectByUserNameAndPassword("'张三'","'admin'");
5.3 #{}预编译sql可以防止sql注入,${}简单的字符串替换,不能防止sql注入。
本文详细介绍了如何在Spring框架下整合MyBatis,包括配置mapper.xml,创建mapper接口,以及正确使用#{}
1万+

被折叠的 条评论
为什么被折叠?



