删除
如果用户名和密码正确,则可以登陆成功
select count(*) from emp where username='zhangwuji' and password='123456';
#{...}会生成预编译SQL,会自动设置参数值
@Mapper
public interface EmpMapper {
@Delete("delete from emp where id=#{id}")
public void delete(Integer id);
}
在接口中定义一个接口方法,接口方法中要传递一个参数(参数指代的就是我们要删除哪一个数据)
插入
-- 插入数据
insert into emp(username, name, gender, image, job, entrydate, dept_id, create_time, update_time)
values ('Tom','汤姆',1,'1.jpg',1,'2005-01-01',1,now(),now());
原本一个个敲出要传递的属性很麻烦,可以用对象进行封装
原代码:(此时传入的数据内容是固定的)
@Insert("insert into emp(username, name, gender, image, job, entrydate, dept_id, create_time, update_time)"
"values ('Tom','汤姆',1,'1.jpg',1,'2005-01-01',1,now(),now())")
public void insert();
}
使用对象后的代码:({...}中的内容是对应的属性名,采用驼峰命名的方法)
//新增员工
@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);
在执行insert方法的时候就会执行insert语句,自动获取emp对象中的各个属性值,从而完成数据插入操作
测试操作:
@Test
public void testInsert(){
//构造员工对象
Emp emp = new Emp();
emp.setUsername("Tom");
emp.setName("汤姆");
emp.setImage("1.img");
emp.setGender((short)1);
emp.setJob((short)1);
emp.setEntrydate(LocalDate.of(2024,5,30));
emp.setCreateTime(LocalDateTime.now());
emp.setUpdateTime(LocalDateTime.now());
emp.setDeptId(1);
//执行新增员工信息操作
empMapper.insert(emp);
}
运行结果:
先写出SQL语句,在mybatis中思考如何该如何执行这条SQL语句:只需要定义一个接口方法(public void (方法名)),在接口方法中上加上一个对应的注解(@insert),然后再注解的value属性中来指定要执行的SQL语句,如果有多个参数可以用实体类来讲多个参数封装起来。
更新
SQL语句的基本结构
update emp set username='',name='',gender='',image='',job='',entrydate='',dept_id='',update_time=''
where id= 1;
接口代码:
//更新员工
@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(18);
emp.setUsername("Tom1");
emp.setName("汤姆1");
emp.setImage("1.jpg");
emp.setGender((short)1);
emp.setJob((short)1);
emp.setEntrydate(LocalDate.of(2024,5,30));
emp.setUpdateTime(LocalDateTime.now());
emp.setDeptId(1);
//执行新增员工信息操作
empMapper.update(emp);
}
运行结果:
1、确定需要执行的SQL语句
2、编写接口方法,加上注解,在注解的values属性中指定需要执行的语句