XML映射文件

XML映射文件

规范
  • XML映射文件的名称与Mapper接口名称一致,并且将XML映射文件和Mapper接口放置在相同包下(同包同名)
  • XML映射文件的namespace属性为Mapper接口全限定名一致。
  • XML映射文件中sql语句的id与Mapper接口中的方法名一致,并保持返回类型一致。
    在这里插入图片描述
package com.itheima.mapper;

import com.itheima.pojo.Emp;
import org.apache.ibatis.annotations.*;

import java.time.LocalDate;
import java.util.List;

@Mapper //在运行时,会自动生成该接口的实现类对象(代理对象),并且将该对象交给IOC容器管理
public interface EmpMapper {
    //根据ID删除数据
    //#:占位符;#{id}:动态把id传进去,id不是固定
    //注意事项:如果mapper接口方法形参只有一个普通类型的参数,#{...}里面的属性名可以随便写,如:#{id},#{value}
 


    //List<Emp>:需要返回多条查询结果
    //条件查询员工(名字带张的男性,且入职时间在2020-01-01到2022-01-01之间,最后根据更新时间进行倒序排序
//    "select * from emp where name like '%张%' and gender =1 and" +
//    "entrydate between '2020-01-01' and '2022-01-01' order by update_time desc "

//    方式1:使用${},但是${}里面的内容会直接拼接在sql语句中,如果${}里面的内容是变量,那么${}里面的内容会变成字符串,
    //'%#{name}%':里面的内容会变成字符串,但是字符串不能放在单引号之中;
    // 使用$符可能会导致sql语句注入,消耗低,不安全(均不是最优解),可以使用concat字符串拼接函数
//    @Select("select * from emp where name like '%${name}%' and gender =#{gender} and " +
//            "entrydate between #{begin} and #{end} order by update_time desc ")

//方式2
//    @Select("select * from emp where name like concat('%',#{name},'%') and gender =#{gender} and " +
//            "entrydate between #{begin} and #{end} order by update_time desc ")
//    public List<Emp> list(String name, Short gender, LocalDate begin,LocalDate end);

//方式3:使用xml配置文件
    public List<Emp> list(String name, Short gender, LocalDate begin,LocalDate end);
}
<!--测试类-->
package com.itheima;

import com.itheima.mapper.EmpMapper;
import com.itheima.pojo.Emp;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

@SpringBootTest
class SpringbootMybatisCrudApplicationTests {

    @Autowired
    private EmpMapper empMapper;
  

    @Test
    public void selectList(){
        List<Emp> empList=empMapper.list("张",(short)1,LocalDate.of(2010,1,1),LocalDate.of(2020,1,1));
        System.out.println(empList);
    }
}
<!--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.itheima.mapper.EmpMapper">
<!--id名称需要与mapper接口方法名一致-->
<!--resultType:指定查询结果封装成哪个Java类型-->
    <select id="list" resultType="com.itheima.pojo.Emp">
        select * from emp where name like concat('%',#{name},'%') and gender =#{gender} and
           entrydate between #{begin} and #{end} order by update_time desc
    </select>
</mapper>
  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值