专栏首页黑马【Note_01】通用 mapper

【Note_01】通用 mapper

一、通用 mapper 简介

最初我们手写 Mybatis 的 mapper.xml 文件,然后使用 Mybatis-generator 逆向工程生成 mapper.xml 文件,再发展到使用通用 mapper,支持自动生成 EntityMapper、mapper.xml 文件。

二、入门 Demo

1.引入依赖

<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper</artifactId>
    <version>最新版本</version>
</dependency>

2.配置 Mybatis.xml 文件

<!-- 与 Mybatis 配置的区别仅仅是将 class="org.xxx" 改为了  class="tk.xxx" -->
<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="扫描包名"/>
    <!-- 其他配置 -->
</bean>

3.实体类配置

public class Entity implements Serializable {
    @Id
    private Long id;
    private String name;

    //setter 和 getter 方法
    //toString()
}

4.接口配置

public interface EntityMapper extends Mapper<Entity> {

}

5.使用通用 mapper

public class MapperTest {
    @Test
    public void testEntityMapper() {
        //获取 spring 上下文对象
        ApplicationContext context =  new ClassPathXmlApplicationContext("Mybatis.xml");
        //获取 EntityMapper
        EntityMapper entityMapper = context.getBean(EntityMapper.class);
        //查询所有数据
        List<Entity> entitys = entityMapper.selectAll();
        //断言 
        Assert.assertEquals(2, entitys.size());
    }
}

三、常用注解

名称

作用范围

含义

注释

@Table

实体类

建立实体类与数据库表之间的对应关系

默认类名首字母小写

@Column

实体类属性

建立实体类字段与数据库字段的对应关系

实体类:驼峰;数据库:_分隔

@Id

实体类属性

标识主键

未标识主键则认为该实体类为全字段联合主键

@GeneratedValue

实体类属性

获取 insert 自增的主键

属性:strategy = GenerationType.IDENTITY

@Transient

实体类属性

标识实体类与数据库不对应的字段

非数据库表中字段

四、CRUD

4.1 select(Entity entity)

* 用于根据实体类查询多条数据
* mapper自动生成的SQL
	entity = {id = null,username="admin",password="123456"}
	⇩ 使用非空成员变量生成 where 条件 
	select id,uaername,password form user where username = ? and passworld = ?

* 补充 
	⇨ selectOne(Entity entity) 查询一条数据
	⇨ selectByPrimaryKey(id)根据主键查询

4.2 insert(Entity entity)

* 按全属性插入数据 
* mapper自动生成的SQL
	entity = {username="admin",password="null",age=null}
	⇩ 属性为空的插入 null
	insert into user(username,passsword,age) values(?,?,?)
	
* 补充 ⇨ insertSelective(Entity entity)属性为空的使用默认值

4.3 updateByPrimaryKey(Entity entity)

* 根据主键修改
* mapper自动生成SQL
	⇩ 属性为空的更新为 null
	update user set username = ?, passwod= ?, age= ? where id = ?
	
* 补充 ⇨ updateByPrimaryKeySelective(Entity entity)属性为空的不更新【推荐】

4.4 delete(Entity entity)

* 根据实体类删除
* mapper自动生成SQL
	⇩ entity 为空则删除所有
	delete from user where username = ? and password = ? and age = ?
	
* 补充 ⇨ deleteByPrimaryKey(id) 根据主键删除

4.5 根据条件查询

//1. 初始化实例对象
Example example = new Example(User.class);
//2. 获取查询条件对象
Criteria criteria = example.createCriteria();
	
//3. 设置查询条件
//3.1 区间之间
criteria.andBetween("age", 15, 30);
//3.2 模糊查询
criteria.andLike("username", "%ad%");
		
//4. 添加或者条件
Criteria criteria2 = example.createCriteria();
//4.1 完全匹配
criteria2.andEqualTo("password", "123456");
example.or(criteria2);
	
//5. 排序
example.setOrderByClause("age desc,id asc");
	
//6. 查询
userMapper.selectByExample(example);

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • MyBatis & 通用Mapper

    因为没有配置PrimaryKey,所以在Person的id上配置注解@javax.persistence.Id

    十毛
  • Mybatis 使用通用 mapper

      通用 Mapper 都可以极大的方便开发人员。可以随意的按照自己的需要选择通用方法,还可以很方便的开发自己的通用方法。极其方便的使用 MyBatis 单表的...

    Demo_Null
  • 神器:通用mapper的使用

    SpringBoot项目,我们优先找启动器即可,也就是包含starter的依赖,这个是由通用mapper作者自己写的启动器。

    刘小爱
  • Springboot集成mybatis通用Mapper

    多凡
  • pagehelper和通用mapper与springboot整合

    关于pageHelper的使用,其官方文档中介绍的比较清楚,地址为:https://pagehelper.github.io/docs/howtouse/

    开发架构二三事
  • Spring Boot集成MyBatis实现通用Mapper

    关于MyBatis,大部分人都很熟悉。MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JD...

    aoho求索
  • 通用Mapper和PageHelper插件 学习笔记

    用户2032165
  • 值得收藏的Mybatis通用Mapper使用大全。

    由于小编的记性不太好,每次在写代码的时候总是把通用mapper的方法记错,所以今天把通用mapper的常用方法做一下总结,方便以后直接查看。好了,不废话啦。

    用户5224393
  • Spring boot Mybatis-XML方式通用Mapper插件(七)

    特别注意,如果使用了1.2.0以上版本 @MapperScan 注解,请使用 tk.mybatis.spring.annotation.MapperScan 注...

    楠楠
  • SpringBoot整合Mybatis,使用通用mapper和PageHelper进行分页

    上节介绍了如何整合Security,这节就说下如何再Springboot下使用持久层框架mybatis和牛人封装的通用mapper与mybatis的整合,直接进...

    AI码师
  • Spring集成MyBatis 通用Mapper以及 pagehelper分页插件

    这里送上楼主配置的Spring DataSource 和 TransactionManager 和MyBatis配置

    試毅-思伟
  • 【微服务】152:Stream流和通用mapper批量查询的使用

    昨天虽然完成了商品查询,但是其有一个问题,我们查询的数据是SPU,SPU中关于商品分类和品牌只是记录了其Id。

    刘小爱
  • 最简单的通用Mapper的使用手册不了解一下?

    通用Mapper的定义SpringBoot如何整合通用mapper第一步:引入依赖第二步:配置逆向工程第三步:定义逆向工程的启动类第四步 测试逆向工程怎么用?如...

    码农飞哥
  • 从零搭建Spring Boot脚手架(4):手写Mybatis通用Mapper

    今天继续搭建我们的kono Spring Boot脚手架,上一文把国内最流行的ORM框架Mybatis也集成了进去。但是很多时候我们希望有一些开箱即用的通用Ma...

    码农小胖哥
  • idea通过mapper快速定位到xml文件

     3.在搜索栏搜索mybatis ,选中 Free Mybatis plugin——install(安装)。重启idea即可

    用户1518699
  • Spring boot Mybatis-XML方式通用Mapper插件之MyBatis Geneator详解(六)

    Github地址:https://github.com/AlanWalkerGuo/GeneratorMapper

    楠楠
  • 还在手写单表的增删改查??还不快快使用通用mapper

    博主自己跟着B站在学习一个项目时,发现了一个好东西,他就是通用mapper,他能够自动帮你封装好单表的增删改查操作,让你不用再自己慢慢手写,十分的方便。现在来简...

    萌萌哒的瓤瓤
  • 【SpringBootFrame】​springboot集成mybatis、redis、shiro、druid、通用mapper、分页插件、swagger框架

    springboot集成mybatis、redis、shiro、druid、通用mapper、分页插件、swagger框架

    凯哥Java
  • 一起来学SpringBoot | 第八篇:通用Mapper与分页插件的集成

    在一起来学SpringBoot | 第七篇:整合Mybatis一文中,我们介绍了 Mybatis这款优秀的框架,顺便提及了民间大神开发的两款插件( 通用Mapp...

    battcn

扫码关注云+社区

领取腾讯云代金券