mybatis0020-使用mapper.xml实现增删改查

本文详细介绍了如何在Spring框架下整合MyBatis,包括配置mapper.xml,创建mapper接口,以及正确使用#{}

资源贴: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注入。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值