5.1 Java EE에서 단일 테이블의 주석 기반 추가, 삭제, 수정 및 쿼리

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 주석을 사용하는 방법을 보여주며, 이 사례는 직원 정보 삭제가 필요한 경우로 구체적인 구현 단계는 다음과 같다.

  1. 주석 추가: 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 어노테이션을 사용하는 경우를 예로 들면, 직원의 아이디와 이름을 기준으로 직원 정보를 조회하는 경우이며, 구체적인 구현 단계는 다음과 같다.

  1. 주석 추가: 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();

}

추천

출처blog.csdn.net/W_Fe5/article/details/131604515