mybatis通用Mapper
本项目主要实现通用mapper,解决的crud包含以下:
- void add(S s);
- void update(S s);
- void delete(S s);
- void deleteById(@Param(value = “id”) Object id, Class
clazz);- void deleteAll(Class
clazz);- S findById(@Param(value = “id”) Object id, Class
clazz);
核心类:
com.cloud.config.mybatis.BaseMapper
com.cloud.config.mybatis.BaseMapperSqlBuilder
com.cloud.config.mybatis.Table
com.cloud.config.mybatis.Id
package com.cloud.config.mybatis;
import org.apache.ibatis.annotations.*;
/**
* 通用mapper
* @param <S>
*/
public interface BaseMapper<S> {
/**
* 保存一个对象
* @param s
*/
@InsertProvider(type = BaseMapperSqlBuilder.class, method = "add")
void add(S s);
/**
* 更新对象根据主键
* @param s
*/
@UpdateProvider(type = BaseMapperSqlBuilder.class, method = "update")
void update(S s);
/**
* 删除对象,暂时有bug
* @param s
*/
@DeleteProvider(type = BaseMapperSqlBuilder.class, method = "delete")
void delete(S s);
/**
* 根据主键删除对象
* @param id
* @param clazz
*/
@DeleteProvider(type = BaseMapperSqlBuilder.class, method = "deleteById")
void deleteById(@Param(value = "id") Object id, Class<S> clazz);
/**
* 删除表数据
* @param clazz
*/
@DeleteProvider(type = BaseMapperSqlBuilder.class, method = "deleteAll")
void deleteAll(Class<S> clazz);
/**
* 根据主键查找一个对象
* @param id
* @param clazz
* @return
*/
@SelectProvider(type = BaseMapperSqlBuilder.class, method = "findById")
S findById(@Param(value = "id") Object id, Class<S> clazz);
}
使用教程:
Mapper接口继承com.cloud.config.mybatis.BaseMapper
@Mapper
public interface DraftMapper extends BaseMapper<Draft> {
}
实体类添加注解标明对应数据库表、注解
@Table("dev_draft")
public class Draft {
@Id
private String id;
}
测试
@RunWith(SpringRunner.class)
@SpringBootTest
@Slf4j
public class DemoApplicationTests {
@Autowired
private DraftMapper draftMapper;
@org.junit.Test
public void test() {
draftMapper.deleteAll(Draft.class);
String id = UUID.randomUUID().toString();
Draft draft = new Draft();
draft.setId(id);
draft.setDomain("TDraft");
draft.setUpdatetime(new Date());
draftMapper.add(draft);
draft.setContent("888");
draftMapper.update(draft);
draftMapper.delete(draft);
}
}
此时DraftMapper便有了基础的crud。
源码下载