1 简介
通用Mapper都可以极大的方便开发人员。可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法。
极其方便的使用MyBatis单表的增删改查。
支持单表操作,不支持通用的多表联合查询。
通用 Mapper 支持 Mybatis-3.2.4 及以上版本。
简介: 在早期项目文档中有过类似主题的内容,但是最近我自己看文档的时候发现一个问题,文档虽然很详细,但是并不适合初次接触的人。为了方便第一次听说,第一次尝试的开发人员了解通用 Mapper,补充此文档。
Gitee地址:https://gitee.com/free/Mapper
2 Spring Boot整合通用Mapper
2.1 新建项目
2.2 配置文件和数据库/实体类
配置文件:
spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/test username: root password: 12345 server: port: 8888
数据库:
CREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8
实体类:
/** * @desc: Student实体类 * @author: YanMingXin * @create: 2021/8/3-10:26 **/ /** * 常用注解: * * @Table 对应数据库的表, 如果不写默认是类名首字母小写作为表名,比Member,不写数据库表默认指向member * @Column: 的属性name对应数据库表的字段,如果不写默认是驼峰下划线匹配,比如private Long myId,如果不写得话,就是对应数据库表字段my_id * @Id: 把当前字段作为数据库主键使用,匹配数据库主键。如果不贴此注解,在某些查询语句的时候会把表字段一起作为联合主键查询 * @GeneratedValue 让通用mapper在执行insert操作之后将自动生成的主键值回写到当前实体对象对应的属性当中 */ @Data @Accessors(chain = true) @Table(name = "student") //指定表名 public class Student { @Id private Integer id; private String name; private Integer age; }
2.3 添加依赖
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!--tkmybatis --> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>2.1.5</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.47</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.9</version> </dependency>
2.4 进行CRUD
@SpringBootTest class SpTkMapperApplicationTests { @Resource private StudentMapper studentMapper; @Test void insertTest() { Student student = new Student() .setId(3) .setName("zs") .setAge(123); studentMapper.insert(student); } @Test void updateTest() { Student student = new Student() .setId(1) .setName("zs_update") .setAge(123); //必须在实体类拥有@Id之后才能使用该方法 studentMapper.updateByPrimaryKey(student); } @Test void deleteTest() { studentMapper.deleteByPrimaryKey(1); } @Test void selectTest() { List<Student> students = studentMapper.selectAll(); System.out.println(students); } }
2.5 使用Example进行模糊查询
@Test void likeTest() { Example example = new Example(Student.class); Example.Criteria criteria = example.createCriteria(); //需要自己加上 % 或 _ criteria.andLike("name", "%zs%"); List<Student> students = studentMapper.selectByExample(example); System.out.println(students); }