前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Note_01】通用 mapper

【Note_01】通用 mapper

作者头像
用户8250147
发布2021-02-04 14:47:05
4220
发布2021-02-04 14:47:05
举报
文章被收录于专栏:黑马黑马

一、通用 mapper 简介

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

二、入门 Demo

1.引入依赖
代码语言:javascript
复制
<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper</artifactId>
    <version>最新版本</version>
</dependency>
2.配置 Mybatis.xml 文件
代码语言:javascript
复制
<!-- 与 Mybatis 配置的区别仅仅是将 class="org.xxx" 改为了  class="tk.xxx" -->
<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="扫描包名"/>
    <!-- 其他配置 -->
</bean>
3.实体类配置
代码语言:javascript
复制
public class Entity implements Serializable {
    @Id
    private Long id;
    private String name;

    //setter 和 getter 方法
    //toString()
}
4.接口配置
代码语言:javascript
复制
public interface EntityMapper extends Mapper<Entity> {

}
5.使用通用 mapper
代码语言:javascript
复制
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)
代码语言:javascript
复制
* 用于根据实体类查询多条数据
* 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)
代码语言:javascript
复制
* 按全属性插入数据 
* 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)
代码语言:javascript
复制
* 根据主键修改
* mapper自动生成SQL
	⇩ 属性为空的更新为 null
	update user set username = ?, passwod= ?, age= ? where id = ?
	
* 补充 ⇨ updateByPrimaryKeySelective(Entity entity)属性为空的不更新【推荐】
4.4 delete(Entity entity)
代码语言:javascript
复制
* 根据实体类删除
* mapper自动生成SQL
	⇩ entity 为空则删除所有
	delete from user where username = ? and password = ? and age = ?
	
* 补充 ⇨ deleteByPrimaryKey(id) 根据主键删除
4.5 根据条件查询
代码语言:javascript
复制
//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);
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、通用 mapper 简介
  • 二、入门 Demo
    • 1.引入依赖
      • 2.配置 Mybatis.xml 文件
        • 3.实体类配置
          • 4.接口配置
            • 5.使用通用 mapper
            • 三、常用注解
            • 四、CRUD
              • 4.1 select(Entity entity)
                • 4.2 insert(Entity entity)
                  • 4.3 updateByPrimaryKey(Entity entity)
                    • 4.4 delete(Entity entity)
                      • 4.5 根据条件查询
                      相关产品与服务
                      数据库
                      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档