通用Mapper入门

文章介绍了Mybatis在使用中的一些常见问题,如SQL维护、数据库移植性等,并提出了通用mapper作为解决方案。通用mapper可以自动生成增删改查的SQL,简化开发工作,同时提到了@Table、@Column、@Id等注解的用法。
摘要由CSDN通过智能技术生成

1、前言
  Mybati虽然极大的提高了程序员对数据库的操作, 但还是存在以下痛点:
  1、mapper.xml文件里有大量的sql,当数据库表字段变动,配置文件就要修改;
  2、需要自己实现sql分页,select * from table where . . . limit 1,3;
  3、数据库可移植性差:如果项目更换数据库,比如oracle–>mysql,mapper.xml中的sql要重新写,因为Oracle的PLSQL 和mysql 支持的函数是不同的;
  4、生成的代码量过大;
  5、批量操作,批量插入,批量更新,需要自写。

2、什么是通用mapper
  通用mapper的作用就是自动生成我们常用的增删改查SQL语句。是中国程序员在 MBG 的基础上结合了部分 JPA 注解做出来的。
  Github地址:https://gitee.com/free/Mapper.git

3、使用流程示例
  先创建一个数据库用于案例测试:

CREATE TABLE `tabple_emp` (
`emp_id` int NOT NULL AUTO_INCREMENT ,
`emp_name` varchar(500) NULL ,
`emp_salary` double(15,5) NULL ,
`emp_age` int NULL ,
PRIMARY KEY (`emp_id`)
);

INSERT INTO `tabple_emp` (`emp_name`, `emp_salary`, `emp_age`) VALUES ('tom', '1254.37', '27');
INSERT INTO `tabple_emp` (`emp_name`, `emp_salary`, `emp_age`) VALUES ('jerry', '6635.42', '38');
INSERT INTO `tabple_emp` (`emp_name`, `emp_salary`, `emp_age`) VALUES ('bob', '5560.11', '40');
INSERT INTO `tabple_emp` (`emp_name`, `emp_salary`, `emp_age`) VALUES ('kate', '2209.11', '22');
INSERT INTO `tabple_emp` (`emp_name`, `emp_salary`, `emp_age`) VALUES ('justin', '4203.15', '30');
3.1 导入依赖

.<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper</artifactId>
    <version>最新版本</version>
</dependency>
在这里插入图片描述

常用注解
 @Table
  作用:建立实体类和数据库表之间的对应关系。
  默认规则:实体类类名首字母小写作为表名。Employee 类→employee 表。
  用法:在@Table 注解的 name 属性中指定目标数据库表的表名。
@Column
  作用:建立实体类字段和数据库表字段之间的对应关系。
  默认规则:
    实体类字段:驼峰式命名
    数据库表字段:使用“_”区分各个单词
  用法:在@Column 注解的 name 属性中指定目标字段的字段名。
@Id
  通用 Mapper 在执行 xxxByPrimaryKey(key)方法时,有两种情况:
  情况 1:没有使用@Id 注解明确指定主键字段,生成的sql语句如下:

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 主键明确标记和数据库表中主键字段对应的实体类字段。
 @GeneratedValue
  作用:让通用 Mapper 在执行 insert 操作之后将数据库自动生成的主键值回写到实体类对象中。
@Transient
  用于标记不与数据库表字段对应的实体类字段。
 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值