一、 @Select注解
下面通过一个案例演示@Select注解的使用,该案例要求根据员工的id查找员工信息,案例具体实现步骤如下。
1、建表:在mybatis数据库中创建名为tb_worker的数据表,同时预先插入几条测试数据。
CREATE TABLE tb_worker(
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(32), age INT, sex VARCHAR(8),
worker_id INT UNIQUE
);
INSERT INTO tb_worker(name,age,sex,worker_id)VALUES('张三',32,'女',1001);
INSERT INTO tb_worker(name,age,sex,worker_id)VALUES('李四',29,'女',1002);
INSERT INTO tb_worker(name,age,sex,worker_id)VALUES('张三',26,'女',1003);
2、创建类:创建持久化类Worker,在Worker类中定义id、员工姓名、年龄、性别、工号等属性以及属性对应的getter/setter方法。
public class Worker {
private Integer id; //主键
private String name; //姓名
private Integer age; //年龄
private String sex; //性别
private String worker_id; //工号
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getWorker_id() {
return worker_id;
}
public void setWorker_id(String worker_id) {
this.worker_id = worker_id;
}
@Override
public String toString() {
return "Worker{" + "id=" + id + ", name=" + name +
", age=" + age + ", sex=" + sex + ", worker_id=" + worker_id + '}';
}
}
3、编写查询方法:创建WorkerMapper接口,用于编写@Select注解映射的select查询方法。
package com.mac.dao;
import com.mac.pojo.Worker;
import org.apache.ibatis.annotations.Select;
public interface WorkerMapper {
@Select("select * from tb_worker where id = #{id}")
Worker selectWorker(int id);
}
4、加载配置文件:在核心配置文件mybatis-config.xml中的<mappers>元素下引入WorkerMapper接口,将WorkerMapper.java接口加载到核心配置文件中。
<mapper class="com.mac.dao.WorkerMapper"/>
5、编写测试方法:在测试类MyBatisTest中,编写测试方法findWorkerByIdTest()。
public void findWorkerByIdTest() {
// 1.获取SqlSession对象
SqlSession session = MyBatisUtils.getSession();
WorkerMapper mapper = session.getMapper(WorkerMapper.class);
// 2.查询id为1的员工信息
Worker worker = mapper.selectWorker(1);
System.out.println(worker.toString());
// 3.关闭SqlSession
session.close();
}
二、 @Insert注解
下面通过一个案例演示@Insert注解的使用,要求实现员工信息的插入,案例具体实现步骤如下。
1、添加注解:在WorkerMapper接口中添加向tb_worker数据表插入数据的方法insertWorker(),并在方法上添加@Insert注解。
@Insert("insert into tb_worker(name,age,sex,worker_id)"
+"values(#{name},#{age},#{sex},#{worker_id})")
int insertWorker(Worker worker);
2、编写测试类:在测试类MyBatisTest中,编写测试方法insertWorkerTest()。
public void insertWorkerTest() {
// 1.生成SqlSession对象
SqlSession session = MyBatisUtils.getSession();
Worker worker = new Worker();
worker.setId(4); worker.setName("赵六"); worker.setAge(36);
worker.setSex("女"); worker.setWorker_id("1004");
WorkerMapper mapper = session.getMapper(WorkerMapper.class);
// 2.插入员工信息
int result = mapper.insertWorker(worker);
// 输出语句省略...
session.commit(); session.close(); // 3.关闭SqlSession
}
三、@Update注解
下面通过一个案例演示@Update注解的使用,该案例要求实现员工信息的修改,案例具体实现步骤如下。
1、添加注解:在WorkerMapper接口中添加更新tb_worker表中数据的方法,并在方法上添加@Update注解。
@Update("update tb_worker set name = #{name},age = #{age} " +"where id = #{id}")
int updateWorker(Worker worker);
2、编写测试类:测试类MyBatisTest中,编写测试方法updateWorkerTest()。
public void updateWorkerTest() {
// 1.生成SqlSession对象
SqlSession session = MyBatisUtils.getSession();
Worker worker = new Worker();
worker.setId(4); worker.setName("李华");
worker.setAge(28);
WorkerMapper mapper = session.getMapper(WorkerMapper.class);
// 2.更新员工信息
int result = mapper.updateWorker(worker);
// 输出语句省略...
session.commit();
session.close(); // 3.关闭SqlSession
}
四、@Delete注解
下面通过一个案例演示@Delete注解的使用,该案例要求实现员工信息的删除,案例具体实现步骤如下。
- 添加注解:在WorkerMapper接口中添加删除数据库中数据的方法,并在方法上添加@Delete注解。
@Delete("delete from tb_worker where id = #{id}")
int deleteWorker(int id);
2、编写测试类:在测试类MyBatisTest中,编写测试方法deleteWorkerTest()。
public void deleteWorkerTest() {
SqlSession session = MyBatisUtils.getSession(); // 1.生成SqlSession对象
WorkerMapper mapper = session.getMapper(WorkerMapper.class);
// 2.删除员工信息
int result = mapper.deleteWorker(4);
if(result>0){
System.out.println("成功删除"+result+"条数据");
}else { System.out.println("删除数据失败");}
session.commit();
session.close(); // 3.关闭SqlSession
}
五、@Param注解
下面通过一个案例演示@Param注解的使用,该案例要求根据员工的id和姓名查询员工信息,案例具体实现步骤如下。
- 添加注解:在WorkerMapper接口中添加多条件查询的方法。
@Select("select * from tb_worker where id = #{param01}
and name = #{param02}")
Worker selectWorkerByIdAndName(@Param("param01") int id,
@Param("param02") String name);
2、编写测试类:在测试类MyBatisTest中,编写测试方法selectWorkerByIdAndNameTest()。
public void selectWorkerByIdAndNameTest() {
// 1.通过工具类生成SqlSession对象
SqlSession session = MyBatisUtils.getSession();
WorkerMapper mapper = session.getMapper(WorkerMapper.class);
// 2.查询id为3姓名为王五的员工的信息
Worker worker = mapper.selectWorkerByIdAndName(3,"王五");
System.out.println(worker.toString());
session.close();
}