1. @선택 주석
다음은 @Select 애노테이션을 사용하는 경우를 예로 들어 설명하는데, 이 경우 직원의 아이디를 기준으로 직원 정보를 조회해야 하며, 구체적인 구현 단계는 다음과 같다.
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. 쿼리 메서드 작성: @Select 주석 매핑에 대한 선택 쿼리 메서드를 작성하기 위한 WorkerMapper 인터페이스를 만듭니다.
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();
}
2. @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
}
3. @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
}
4. @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 어노테이션을 사용하는 경우를 예로 들면, 직원의 아이디와 이름을 기준으로 직원 정보를 조회하는 경우이며, 구체적인 구현 단계는 다음과 같다.
- 주석 추가: 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();
}