通用mapper常用注解

1|0通用mapper的作用:

自动实现单表的增删改查

2|0常用注解使用

2|1@Table

作用:建立实体类和数据库表之间的对应关系。
默认规则:实体类类名首字母小写作为表名。Employee 类→employee 表。
用法:在@Table注解的 name 属性中指定目标数据库表的表名

2|2@Column

作用:建立实体类字段和数据库表字段之间的对应关系。
默认规则:
实体类字段:驼峰式命名
数据库表字段:使用“_”区分各个单词
用法:在@Column 注解的 name 属性中指定目标字段的字段名

2|3@Id

通用 Mapper 在执行 xxxByPrimaryKey(key)方法时,有两种情况。
情况 1:没有使用@Id 注解明确指定主键字段
SELECT emp_id,emp_name,emp_salary_apple,emp_age FROM tabple_emp WHERE emp_id = ?
AND emp_name = ? AND emp_salary_apple = ? AND emp_age = ?
之所以会生成上面这样的 WHERE 子句是因为通用 Mapper 将实体类中的所有
字段都拿来放在一起作为联合主键。
情况 2:使用@Id 主键明确标记和数据库表中主键字段对应的实体类字段

2|4@GeneratedValue

作用:让通用 Mapper 在执行 insert 操作之后将数据库自动生成的主键值回写到实
体类对象中。
自增主键用法: @GeneratedValue(strategy = GenerationType.IDENTITY)

2|5@Transient

用于标记不与数据库表字段对应的实体类字段。
例:
@Transient
private String otherThings; //非数据库表中字段

3|0QBC查询

3|1概念

Query By Criteria
Criteria 是 Criterion 的复数形式。意思是:规则、标准、准则。在 SQL 语句中相当
于查询条件。
QBC 查询是将查询条件通过 Java 对象进行模块化封装。

示例代码

//目标:WHERE (emp_salary>? AND emp_age<?) OR (emp_salary<? AND emp_age>?) //1.创建 Example 对象 Example example = new Example(Employee.class); //设置排序信息 example.orderBy("empSalary").asc().orderBy("empAge").desc(); //设置“去重” example.setDistinct(true); //设置 select 字段 example.selectProperties("empName","empSalary"); //*********************** //2.通过 Example 对象创建 Criteria 对象 Criteria criteria01 = example.createCriteria(); Criteria criteria02 = example.createCriteria(); //3.在两个 Criteria 对象中分别设置查询条件 //property 参数:实体类的属性名 //value 参数:实体类的属性值 criteria01.andGreaterThan("empSalary", 3000).andLessThan("empAge", 25); criteria02.andLessThan("empSalary", 5000).andGreaterThan("empAge", 30); //4.使用 OR 关键词组装两个 Criteria 对象 example.or(criteria02); //5.执行查询 List<Employee> empList = employeeService.getEmpListByExample(example); for (Employee employee : empList) { System.out.println(employee); }

4|0增删改查

@Service public class VirtualIpService { @Autowired IVirtualIPMapper vipMapper; public void test(){ VirtualIpBean vipBean = new VirtualIpBean(); vipBean.setBeginTime(new Date()); //(1)mapper基础接口 //select接口 List<VirtualIpBean> vipList = vipMapper.select(vipBean);//根据实体中的属性值进行查询,查询条件使用等号 VirtualIpBean vip = vipMapper.selectOne(vipBean);//根据实体中的属性进行查询,只能有一个返回值,有多个结果是抛出异常,查询条件使用等号 List<VirtualIpBean> vipList2 = vipMapper.selectAll();//查询全部结果,select(null)方法能达到同样的效果 VirtualIpBean vip2 = vipMapper.selectByPrimaryKey(1);//根据主键字段进行查询,方法参数必须包含完整的主键属性,查询条件使用等号 int count = vipMapper.selectCount(vipBean);//根据实体中的属性查询总数,查询条件使用等号 //insert接口 int a = vipMapper.insert(vipBean);//保存一个实体,null的属性也会保存,不会使用数据库默认值 int a1 = vipMapper.insertSelective(vipBean);//保存实体,null的属性不会保存,会使用数据库默认值 //update接口 int b = vipMapper.updateByPrimaryKeySelective(vipBean);//根据主键更新属性不为null的值 int c = vipMapper.updateByPrimaryKey(vipBean);//根据主键更新实体全部字段,null值会被更新 //delete接口 int d = vipMapper.delete(vipBean);//根据实体属性作为条件进行删除,查询条件使用等号 int e = vipMapper.deleteByPrimaryKey(1);//根据主键字段进行删除,方法参数必须包含完整的主键属性 //(2)Example方法 Example example = new Example(VirtualIpBean.class); example.createCriteria().andEqualTo("id", 1); example.createCriteria().andLike("val", "1"); //自定义查询 List<VirtualIpBean> vipList3 = vipMapper.selectByExample(example); } }

__EOF__

本文作者程序员小宇
本文链接https://www.cnblogs.com/treasury/p/12652618.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   程序员小宇  阅读(2388)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示