学习视频:5001 @Select注解_哔哩哔哩_bilibili~5009 案例:基于MyBatis注解的学生管理程序_哔哩哔哩_bilibili
目录
1.基于注解的单表增删改查
1.1@Select注解
1.2Insert注解
1.3Update注解
1.4Delete注解
1.5Param注解
2.基于注解的关联查询
2.1一对一查询
2.2一对多查询
2.3多对多查询
3.基于MyBatis注解的学生管理程序
查询id为2的学生信息
修改学生信息
一对多查询班级为二班的学生
1.基于注解的单表增删改查
1.1@Select注解
数据准备
product表

package com.it.pojo;
public class Product    {
    private int id;
    private String goodsname;
    private int price;
    private int typeid;
    @Override
    public String toString() {
        return "Product{" +
                "id=" + id +
                ", goodsname='" + goodsname + '\'' +
                ", price=" + price +
                ", typeid=" + typeid +
                '}';
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getGoodsname() {
        return goodsname;
    }
    public void setGoodsname(String goodsname) {
        this.goodsname = goodsname;
    }
    public int getPrice() {
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }
    public int getTypeid() {
        return typeid;
    }
    public void setTypeid(int typeid) {
        this.typeid = typeid;
    }
}
 
package com.it.dao;
import com.it.pojo.Product;
import org.apache.ibatis.annotations.Select;
public interface ProductMapper {
    @Select("select  * from product where id=#{id}")
    public Product findProductById(int id);
}
 
![]()
package com.it.dao;
import com.it.pojo.Product;
import com.it.utils.MyBatisUtils;
import junit.framework.TestCase;
import org.junit.Before;
import org.apache.ibatis.session.SqlSession;
import org.junit.After;
import org.junit.Test;
public class ProductMapperTest extends TestCase {
    private ProductMapper productMapper;
    private SqlSession session;
    @Before
    public void setUp()
    {
        session= MyBatisUtils.getSession();
       productMapper=session.getMapper(ProductMapper.class);
    }
    @Test
    public void testFindProductById() {
      Product product= productMapper.findProductById(1);
        System.out.println(product);
    }
    @After
    public void release()
    {
        session.close();
    }
} 

1.2Insert注解
    @Insert("insert into product(goodsname,price,typeid) values (#{goodsname},#{price},#{typeid})")
    public int insertProduct(Product product);
 
 @Test
    public void testinsertProduct()
    {
        Product product2=new Product();
        product2.setGoodsname("风扇");
        product2.setPrice(200);
        product2.setTypeid(2);
        int  i= productMapper.insertProduct(product2);
        System.out.println(i);
        session.commit();
    } 


1.3Update注解
   @Update("update product set goodsname=#{goodsname},price=#{price} where id=#{id}")
    public int updateProduct(Product product); 
 @Test
    public void  testupdateProduct()
    {
        Product product2=new Product();
        product2.setGoodsname("大风扇");
        product2.setId(5);
        product2.setPrice(300);
        int i=    productMapper.updateProduct(product2);
        System.out.println(i);
        session.commit();
    }
 

1.4Delete注解
 @Delete("delete from product where id=#{id}")
    public int deleteProduct(int id); 
  @Test
    public void testdeleteProduct()
    {
        int i= productMapper.deleteProduct(5);
        if (i>0)
        {
            System.out.println("删除成功");
        }
        session.commit();
    } 


1.5Param注解
@Select("select * from product where id=#{param01} and goodsname=#{param02}")
    public Product selectProductByIdAndGoodsname(@Param("param01") int id,
                                            @Param("param02") String goodsname); 
 @Test
    public void testselectProductByIdAndGoodsname()
    {
        Product product=productMapper.selectProductByIdAndGoodsname(1,"电视机");
        System.out.println(product);
    } 

2.基于注解的关联查询
2.1一对一查询
package com.it.pojo;
public class IdCard {
    private int id;
    private String code;
    @Override
    public String toString() {
        return "IdCard{" +
                "id=" + id +
                ", code='" + code + '\'' +
                '}';
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getCode() {
        return code;
    }
    public void setCode(String code) {
        this.code = code;
    }
}
 
package com.it.pojo;
public class Person {
    private int id;
    private String name;
    private int age;
    private String sex;
    private IdCard card;
    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", card=" + card +
                '}';
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
    public IdCard getCard() {
        return card;
    }
    public void setCard(IdCard card) {
        this.card = card;
    }
}
 
package com.it.dao;
import com.it.pojo.IdCard;
import org.apache.ibatis.annotations.Select;
public interface IdCardMapper {
    @Select("select * from tb_idcard where id=#{id}")
     IdCard selectIdCardById(int id);
}
 
public interface PersonMapper {
    @Select("select * from tb_person where id=#{id}")
    @Results({@Result(
                    column = "card_id",
                    property = "card",
                    one=@One(select = "com.it.dao.IdCardMapper.selectIdCardById")
    )})
    Person selectPersonById(int id);
}
 
public class PersonMapperTest extends TestCase  {
    private PersonMapper personMapper;
    private SqlSession session;
    @Before
    public void setUp()
    {
        session= MyBatisUtils.getSession();
        personMapper=session.getMapper(PersonMapper.class);
    }
    @Test
    public void testSelectPersonById() {
       Person person=personMapper.selectPersonById(1);
        System.out.println(person.toString());
    }
    @After
    public void release()
    {
        session.close();
    }
} 

这里将mybatis版本改为了3.5.3,不然报错
2.2一对多查询
public class Orders {
    private int id;
    private String number;
    private int userId;
    @Override
    public String toString() {
        return "Orders{" +
                "id=" + id +
                ", number='" + number + '\'' +
                ", userId=" + userId +
                '}';
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getNumber() {
        return number;
    }
    public void setNumber(String number) {
        this.number = number;
    }
    public int getUserId() {
        return userId;
    }
    public void setUserId(int userId) {
        this.userId = userId;
    }
}
 
public class Users {
    private int id;
    private String username;
    private String address;
    private List<Orders> ordersList;
    @Override
    public String toString() {
        return "Users{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", address='" + address + '\'' +
                ", ordersList=" + ordersList +
                '}';
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getAddress() {
        return address;
    }
    public void setAddress(String address) {
        this.address = address;
    }
}
 
public interface OrdersMapper {
    @Select("select * from tb_orders where user_id =#{id}")
    @Results({
            @Result(id = true,property = "id",column = "id"),
            @Result(property = "number",column = "number")
    })
    public List<Orders> selectOrdersByUserId(int id);
}
 
public interface UsersMapper {
    @Select("select * from tb_user where id=#{id}")
    @Results({
            @Result(id = true,property = "id",column = "id"),
            @Result(property = "username",column = "username"),
            @Result(property = "address",column = "address"),
            @Result(
                    property = "ordersList",
                    column = "id",many = @Many(select = "com.it.dao.OrdersMapper.selectOrdersByUserId")
            )
    })
    public Users selectUserById(int id);
}
 
public class UsersMapperTest {
    @Test
    public void testSelectUserById() {
        SqlSession session= MyBatisUtils.getSession();
        UsersMapper usersMapper = session.getMapper(UsersMapper.class);
    Users users= usersMapper.selectUserById(1);
        System.out.println(users);
        session.close();
    }
} 

2.3多对多查询
public class Orders {
    private int id;
    private String number;
    private int userId;
    private List<Product2>product2List;
    @Override
    public String toString() {
        return "Orders{" +
                "id=" + id +
                ", number='" + number + '\'' +
                ", userId=" + userId +
                ", product2List=" + product2List +
                '}';
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getNumber() {
        return number;
    }
    public void setNumber(String number) {
        this.number = number;
    }
    public int getUserId() {
        return userId;
    }
    public void setUserId(int userId) {
        this.userId = userId;
    }
}
 
import java.util.List;
public class Product2 {
    private int id;
    private String name;
    private double price;
    private List<Orders>ordersList;
    @Override
    public String toString() {
        return "Product2{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", price=" + price +
                ", ordersList=" + ordersList +
                '}';
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public double getPrice() {
        return price;
    }
    public void setPrice(double price) {
        this.price = price;
    }
    public List<Orders> getOrdersList() {
        return ordersList;
    }
    public void setOrdersList(List<Orders> ordersList) {
        this.ordersList = ordersList;
    }
}
 
public interface Product2Mapper {
    @Select("select * from tb_product where id in"+"(select product_id from tb_ordersitem where orders_id=#{orderId})")
    public List<Product2> selectProduct2sByOrdersId(int orderId);
}
 
    @Select("select  * from tb_orders where id=#{id}")
    @Results(
            {
             @Result(id = true,column = "id",property = "id"),
             @Result(column = "number",property = "number"),
             @Result(
                     property = "product2List",
                     column = "id",
                     many = @Many(select = "com.it.dao.Product2Mapper.selectProduct2sByOrdersId")
             )
            }
    )
    public Orders selectOrdersById(int id);
 
public class OrdersMapperTest extends TestCase {
    public void testSelectOrdersById() {
        SqlSession session= MyBatisUtils.getSession();
        OrdersMapper ordersMapper = session.getMapper(OrdersMapper.class);
        Orders orders = ordersMapper.selectOrdersById(1);
        System.out.println(orders);
        session.close();
    }
} 

3.基于MyBatis注解的学生管理程序
数据准备
CREATE TABLE student(
	id INT PRIMARY KEY AUTO_INCREMENT,
	NAME VARCHAR(20),
	age INT,
	cid INT
);
INSERT INTO student VALUES(1,'张三',18,1);
INSERT INTO student VALUES(2,'李四',18,2);
INSERT INTO student VALUES(3,'王五',19,2);
INSERT INTO student VALUES(4,'赵六',20,1);
CREATE TABLE class(
	id INT PRIMARY KEY AUTO_INCREMENT,
	classname VARCHAR(20)
);
INSERT INTO class VALUES(1,'一班');
INSERT INTO class VALUES(2,'二班');
 
public class Student {
    private int id;
    private  String name;
    private  int age;
    private  int cid;
    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", cid=" + cid +
                '}';
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public int getCid() {
        return cid;
    }
    public void setCid(int cid) {
        this.cid = cid;
    }
}
 
public class Iclass {
    private int id;
    private String classname;
    //一对多映射
    private List<Student>studentList;
    @Override
    public String toString() {
        return "Iclass{" +
                "id=" + id +
                ", classname='" + classname + '\'' +
                ", studentList=" + studentList +
                '}';
    }
    public String getClassname() {
        return classname;
    }
    public void setClassname(String classname) {
        this.classname = classname;
    }
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public List<Student> getStudentList() {
        return studentList;
    }
    public void setStudentList(List<Student> studentList) {
        this.studentList = studentList;
    }
}
 
查询id为2的学生信息
public interface StudentMapper {
    @Select("select * from student where id=#{id}")
    public Student selectStudentById(int id);
}
 
public class StudentMapperTest extends TestCase {
    public void testSelectStudentById() {
        SqlSession session= MyBatisUtils.getSession();
        StudentMapper studentMapper= session.getMapper(StudentMapper.class);
        Student student= studentMapper.selectStudentById(2);
        System.out.println(student);
        session.close();
    }
} 

修改学生信息
    @Update("update student set name=#{name},age=#{age} where id=#{id}")
    public int updateStudent(Student student); 
    public void testupdateStudentByName() {
        SqlSession session= MyBatisUtils.getSession();
        StudentMapper studentMapper= session.getMapper(StudentMapper.class);
        Student student= new Student();
        student.setName("小吴");
        student.setAge(20);
        student.setId(4);
        int i= studentMapper.updateStudent(student);
        if(i>0){
            System.out.println("修改成功");
        }
        session.commit();
        session.close();
    }
 

一对多查询班级为二班的学生
   @Select("select * from student where cid=#{cid}")
    @Results({
            @Result(id =true,column = "id",property = "id"),
            @Result(column = "name",property = "name"),
            @Result(column = "age",property = "age")
    })
    public List<Student>selectStudentsByCid(int cid);
 
    @Select("select  * from class where id=#{id}")
    @Results({
            @Result(id = true,column = "id",property = "id"),
            @Result(property = "classname",column = "classname"),
            @Result(property = "studentList",
                    column = "id",
                    many =@Many(select = "com.it.dao.StudentMapper.selectStudentsByCid")
            )
    })
    public Iclass selectClassById(int id);
 
public class ClassMapperTest extends TestCase {
    public void testSelectClassById() {
        SqlSession session= MyBatisUtils.getSession();
        ClassMapper classMapper = session.getMapper(ClassMapper.class);
        Iclass iclass =classMapper.selectClassById(2);
        System.out.println(iclass);
        session.close();
    }
} 

![[Meachines] [Easy] nibbles Nibbleblog-Upload](https://img-blog.csdnimg.cn/img_convert/d269d18260890895492167c6e6bcfdd3.jpeg)


















