使用tk.mybatis.mapper.common下的接口方法实现类似JPA操作

tk.mybatis.mapper.common包下提供有许多ORM对象增删查改的接口方法,可以直接使用或者对这些方法进行扩展使用来达到类似JPA操作数据库的效果。

集成tk.mybatis也十分简单,只需要引入依赖:

<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper-spring-boot-starter</artifactId>
    <version>2.1.0</version>
</dependency>

根据自己项目SpringBoot版本选择不冲突的tk.mybatis版本,我的SpringBoot版本是2.0.0.RELEASE。


下面将举例说明并使用相关接口方法
1、首先创建表以及Java实体对象
-- 使用MySQL数据库
create table tb_song
(
  SONG_ID              int primary key auto_increment,
  SINGER_NAME          VARCHAR(40) null,
  SONG_SORT            int(8) 	   null,
  SONG_STATUS          int(4)      null,
);
@Getter
@Setter
@ToString
@Table(name = "tb_song")
public class SongEntity {
	@Id
	@Column(name = "SONG_ID")
    private Integer songId;
	@Column(name = "SONG_NAME")
    private String songName;
    @Column(name = "SONG_SORT")
    private Integer songSort;
    @Column(name = "SONG_STATUS")
    private Short songStatus;
}

实体类使用到了以下注解(@Getter,@Setter,@ToString这三个是lombok的注解),@Table(描述表信息)@Id(指定表的主键字段)@Column(描述数据库字段信息)

2、MyMapper基类继承tk.mybatis.mapper.common.Mapper和tk.mybatis.mapper.additional.insert.InsertListMapper接口:
/**
 * @param <T>
 * @author caijun
 * @description Dao层基类
 */
public interface MyMapper<T> extends Mapper<T>, InsertListMapper<T> {

}

这里先介绍一下 Mapper, InsertListMapper 这两个接口的继承关系和接口方法:
这里的InsertListMapper接口也是一个通用Mapper接口,含有特殊方法,批量插入,支持批量插入的数据库都可以使用,例如mysql,h2等。

继承
继承
继承
继承
继承
继承
继承
继承
继承
继承
继承
继承
继承
继承
继承
继承
继承
继承
继承
继承
继承
Mapper
BaseMapper
BaseSelectMapper
SelectOneMapper
SelectMapper
SelectAllMapper
SelectCountMapper
SelectByPrimaryKeyMapper
ExistsWithPrimaryKeyMapper
BaseInsertMapper
InsertMapper
InsertSelectiveMapper
BaseUpdateMapper
UpdateByPrimaryKeyMapper
UpdateByPrimaryKeySelectiveMapper
BaseDeleteMapper
DeleteMapper
DeleteByPrimaryKeyMapper
ExampleMapper
不展开说...
RowBoundsMapper
不展开说...

tk.mybatis对象操作API介绍:
查询方法:
BaseSelectMapper接口下通用方法

方法名称说明
T selectOne(T record);根据实体属性查询单个对象
List select(T record);根据实体属性查询多个对象
List selectAll();查询全部结果
int selectCount(T record);根据实体属性查询总数
T selectByPrimaryKey(Object key);根据主键查询单个对象
boolean existsWithPrimaryKey(Object key);根据主键查询主键是否存在

插入方法:

方法名称说明
int insert(T record);保存单个实体,null的属性也会保存,不会使用数据库默认值
int insertSelective(T record);保存单个实体,null的属性不会保存,会使用数据库默认值

批量插入方法:
InsertListMapper接口下通用方法

方法名称说明
int insertList(List<? extends T> recordList);批量插入方法,支持批量插入的数据库可用

更新方法:

方法名称说明
int updateByPrimaryKey(T record);根据主键更新全部字段,null值也会被更新
int updateByPrimaryKeySelective(T record);根据主键更新属性不为null的字段

删除方法:

方法名称说明
int delete(T record);根据实体属性作为条件进行查询删除
int deleteByPrimaryKey(Object key);根据主键进行删除
3、实体对象接口继承MyMapper基类接口
@Mapper
public interface SongEntityMapper extends MyMapper<SongEntity> {
    // 自定义通过Mapper.xml定义的数据库操作(本篇不展开说这种方式)
    ...
}
4、service类中注入SongEntityMapper接口使用通用方法
@Slf4j
@Service
public class SongServiceImpl extends BaseServiceImpl<SongEntity, Integer, Object> implements ISongService {

	// 注入SongEntityMapper
    @Autowired
    private SongEntityMapper songMapper;
	
	// 这里是实现BaseServiceImpl抽象方法返回SongEntityMapper接口对象,不必太关注
    @Override
    protected MyMapper<SongEntity> getMyMapper() {
        return songMapper;
    }

	@Override
	    public void testUseCommonMethod() {
        songMapper.
    }
}

在这里插入图片描述
mybatis更新后提供的这些通用方法虽不如JPA灵活,但是可以在使用mybatis作为DAO层框架的项目中通过简单的继承通用接口,亦可方便的使用对象操作,简单又高效。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值