springboot-mybatis的增删改查

目录

一、准备工作

二、常用配置

 三、尝试

 四、增删改查

1、增加

2、删除

3、修改

4、查询

五、XML的映射方法


一、准备工作

实施前的准备工作:

  1. 准备数据库表

  2. 创建一个新的springboot工程,选择引入对应的起步依赖(mybatis、mysql驱动、lombok)

  3. application.properties中引入数据库连接信息

  4. 创建对应的实体类 Emp(实体类属性采用驼峰命名)

  5. 准备Mapper接口 EmpMapper

SQL文件:emp的sql文件

springboot-mybatis的增删改查_第1张图片

二、常用配置

#指定mybatis输出日志的位置, 输出控制台
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

# 查询的时候mybatis驼峰命名法
mybatis.configuration.map-underscore-to-camel-case=true

 三、尝试

在Mybatis中提供的参数占位符有两种:${...} 、#{...}

  • #{...}

    • 执行SQL时,会将#{…}替换为?,生成预编译SQL,会自动设置参数值

    • 使用时机:参数传递,都使用#{…}

  • ${...}

    • 拼接SQL。直接将参数拼接在SQL语句中,存在SQL注入问题

    • 使用时机:如果对表名、列表进行动态设置时使用

注意事项:在项目开发中,建议使用#{...},生成预编译SQL,防止SQL注入安全。

 四、增删改查

1、增加

 // 新增
    @Options(useGeneratedKeys = true,keyProperty = "id")  // 返回主键
    @Insert("insert into emp(username, name, gender, image, job, entrydate, " +
            "dept_id, create_time, update_time) " +
            "values (#{userName}, #{name}, #{gender}, #{image}," +
            " #{job}, #{entryDate}, #{deptId}, #{createTime}, #{updateTime})")
    int insert(Emp emp);

        测试

 // 新增
    @Test
    public void empAdd(){

        //创建员工对象
        Emp emp = new Emp();
        emp.setUserName("小明");
        emp.setName("小将");
        emp.setImage("sadasdasd.jpg");
        emp.setGender((short)1);
        emp.setJob(1);
        emp.setEntryDate(LocalDate.of(2000,1,1));
        emp.setCreateTime(LocalDate.now());
        emp.setUpdateTime(LocalDate.now());
        emp.setDeptId(1);

        empMapper.insert(emp);

    }

2、删除

  // 删除
    @Delete("delete from emp where id = #{id}")
    int delete(int id);

        test

 // 删除测试
    @Test
     public void empDelete() {

        var s =  empMapper.delete(17);

        System.out.printf("删除:%s\n",s);

    }

3、修改

  // 修改
    @Update("update emp set username = #{userName}, name = #{name}, gender = 3 where id = 18;")
    void update(Emp emp);

        Test

  // 修改
    @Test
    public  void update(){

        Emp emp = new Emp();

        emp.setName("大卫");
        emp.setUserName("daadasd");
        emp.setGender(2);

        empMapper.update(emp);


    }

4、查询

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

        Test

 // 查询
    @Test
    public void search(){


        List emp =   empMapper.list("汤姆", (short) 1,LocalDate.of(2000,8,15),LocalDate.of(2023,8,5));
        System.out.println(emp);
        
    }

五、XML的映射方法

  • :定义可重用的SQL片段

  • :通过属性refid,指定包含的SQL片段

    • 用于判断条件是否成立,如果条件为true,则拼接SQL

    • 形式:

    • where元素只会在子元素有内容的情况下才插入where子句,而且会自动去除子句的开头的AND或OR

    • 动态地在行首插入 SET 关键字,并会删掉额外的逗号。(用在update语句中)​​​​​​​

  • ​​​​​​​遍历deleteByIds方法中传递的参数ids集合

       
    




    
    select * from emp 


    

    

     
    
        delete from emp where id in
        
            #{id}
        
    


你可能感兴趣的:(JavaWeb,spring,boot,mybatis,后端,java)