当前位置: 首页 > news >正文

Mybatis的注解开发学习笔记

学习视频: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;@Overridepublic 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;@Beforepublic void setUp(){session= MyBatisUtils.getSession();productMapper=session.getMapper(ProductMapper.class);}@Testpublic void testFindProductById() {Product product= productMapper.findProductById(1);System.out.println(product);}@Afterpublic void release(){session.close();}}


1.2Insert注解

@Insert("insert into product(goodsname,price,typeid) values (#{goodsname},#{price},#{typeid})")public int insertProduct(Product product);
 @Testpublic 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);
 @Testpublic 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);
  @Testpublic 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);
 @Testpublic 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;@Overridepublic 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;@Overridepublic 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;@Beforepublic void setUp(){session= MyBatisUtils.getSession();personMapper=session.getMapper(PersonMapper.class);}@Testpublic void testSelectPersonById() {Person person=personMapper.selectPersonById(1);System.out.println(person.toString());}@Afterpublic void release(){session.close();}
}

这里将mybatis版本改为了3.5.3,不然报错 


2.2一对多查询


public class Orders {private int id;private String number;private int userId;@Overridepublic 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;@Overridepublic 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 {@Testpublic 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;@Overridepublic 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;@Overridepublic 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;@Overridepublic 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;@Overridepublic 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();}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【香橙派系列教程】(六)嵌入式SQLite数据库
  • 【gpt预测与推理区别】
  • Apache Kylin与BI工具集成:数据可视化实战
  • 树的存储结构
  • 2024最简七步完成 将本地项目提交到github仓库方法
  • IPV6公网暴露下的OPENWRT防火墙安全设置(只允许访问局域网中指定服务器指定端口其余拒绝)
  • virtualbox7安装centos7.9配置静态ip
  • Java 并发编程:Java 线程池的介绍与使用
  • C# 串口通信(通过serialPort控件发送及接收数据)
  • Android 实现屏幕录制
  • GCKontrol-GCAir工具链在飞机功能系统设计中的应用
  • 安装 electron 报错解决
  • 你有GitHub Models,我有CSGHub和StarShip
  • 谷粒商城实战笔记-105~107-全文检索-ElasticSearch-入门
  • Mac OS平台,利用 gifify 制作gif教程
  • 时间复杂度分析经典问题——最大子序列和
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • DataBase in Android
  • go append函数以及写入
  • MaxCompute访问TableStore(OTS) 数据
  • MySQL主从复制读写分离及奇怪的问题
  • Redis在Web项目中的应用与实践
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • STAR法则
  • TCP拥塞控制
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 闭包--闭包之tab栏切换(四)
  • 对话:中国为什么有前途/ 写给中国的经济学
  • 基于 Babel 的 npm 包最小化设置
  • 一些关于Rust在2019年的思考
  • mysql面试题分组并合并列
  • # Apache SeaTunnel 究竟是什么?
  • #define,static,const,三种常量的区别
  • (04)odoo视图操作
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (8)STL算法之替换
  • (C++20) consteval立即函数
  • (附源码)ssm码农论坛 毕业设计 231126
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)http-server应用
  • *1 计算机基础和操作系统基础及几大协议
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET Framework、.NET Core 、 .NET 5、.NET 6和.NET 7 和.NET8 简介及区别
  • .Net 路由处理厉害了
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET连接MongoDB数据库实例教程
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • .NET中使用Protobuffer 实现序列化和反序列化
  • [AIGC] Java 和 Kotlin 的区别
  • [AutoSar]BSW_Com02 PDU详解
  • [C#]OpenCvSharp结合yolov8-face实现L2CS-Net眼睛注视方向估计或者人脸朝向估计
  • [C#]winform部署PaddleOCRV3推理模型
  • [C#]winform使用引导APSF和梯度自适应卷积增强夜间雾图像的可见性算法实现夜间雾霾图像的可见度增强
  • [C++]拼图游戏