5.1Java EE基于注解的单表增删改查

一、 @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注解的使用,该案例要求实现员工信息的删除,案例具体实现步骤如下。

  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注解的使用,该案例要求根据员工的id和姓名查询员工信息,案例具体实现步骤如下。

  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