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

资源贴:https://blog.csdn.net/wrongyao/article/details/81277066

1、根据资源贴可以搭起spring和mybatis整合的demo

2、使用mybatis的mapper.xml需要注意,xml的一定要和mapper接口放在同一个包中,而且xml文件要和mapper接口同名,因为mybatis是通过mapper接口来扫描xml文件的。下位项目目录结构。

mybatis0020-使用mapper.xml实现增删改查_第1张图片

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关联起来的。

用来配置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 sysUsers = sysUserMapper.selectByUserNameAndPassword("'张三'","'admin'");

5.3  #{}预编译sql可以防止sql注入,${}简单的字符串替换,不能防止sql注入。

你可能感兴趣的:(#,Mybatis)