Mybatis-基础操作

根据主键删除:

@Delete("delete from emp where id = #{id}")
    public void delete(Integer id);
@Test
public void testDelete(){
    empMapper.delete(16);
    System.out.println("删除成功");
}

日志输出:



参数占位符:

新增:

@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})")属性名为驼峰命名防止格式错误
    public void insert(Emp emp);
@Test
    public void testInsert(){
        //构造员工对象
        Emp emp = new Emp();
        emp.setUsername("Tom3");
        emp.setName("汤姆3");
        emp.setImage("1.jpg");
        emp.setGender((short)1);
        emp.setJob((short)1);
        emp.setEntrydate(LocalDate.of(2000,1,1));
        emp.setCreateTime(LocalDateTime.now());
        emp.setUpdateTime(LocalDateTime.now());
        emp.setDeptId(1);

        empMapper.insert(emp);

获取返回的主键:
在接口中的@Insert上加入@Options(useGeneratedKeys = true, keyProperty = "id")

empMapper.insert(emp);
System.out.println(emp.getId());

更新:

@Update("update emp set username =#{username} ,name=#{name},gender=#{gender},image=#{image}," +
            "job=#{job},entrydate=#{entrydate},dept_id=#{deptId},update_time=#{updateTime} where id = #{id};")
    public void update(Emp emp);
 //更新员工
    @Test
    public void testUpdate(){
        //构造员工对象
        Emp emp = new Emp();
        emp.setId(20);
        emp.setUsername("Tom1");
        emp.setName("汤姆1");
        emp.setImage("1.jpg");
        emp.setGender((short)1);
        emp.setJob((short)1);
        emp.setEntrydate(LocalDate.of(2000,1,1));
        emp.setUpdateTime(LocalDateTime.now());
        emp.setDeptId(3);

        //执行更新员工操作
        empMapper.update(emp);
    }

查询:
根据ID:


出现问题:

@Select("select * from emp where id = #{id}")
    public Emp getById(Integer id);
@Test
    public void testGetById(){
        Emp emp = empMapper.getById(20);
        System.out.println(emp);
    }


根据条件:


由于#不能放入''内,所以用$,存在安全隐患
用concat拼接字符串即可:

@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);
@Test
    public void testList(){
        List<Emp> empList = empMapper.list("张", (short) 1, LocalDate.of(2010, 1, 1), LocalDate.of(2020, 1, 1));
        System.out.println(empList);
    }

XML:

posted @ 2025-03-17 21:31  mooncage  阅读(23)  评论(0)    收藏  举报