项目使用了SpringBoot+TKMytis框架,所以简单介绍如何使用。
一、框架配置
配置的话非常简单,我用的是SpringBoot,直接引入:
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>4.1.5</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
二、类配置方法
1、实体类
创建一个实体类与数据库进行映射
@Table(name = "t_exam_publish_record")
@ToString(callSuper = true)
@Data
public class TExamPublishRecord extends BaseEntity implements Serializable {
/**
* 考试发布记录ID
*/
@Id
private Long id;
/**
* 试卷表_试卷ID
*/
@Column(name = "t_p_id")
private Long tPId;
@Column(name = "sessionId")
private String sessionId;
/**
* 考试标题
*/
private String title;
/**
* 发布人
*/
private Long publisher;
}
其中@Table即数据表表名,@Column即列名,@Id作为主键,需要注意,@Id注解不可有多个,@Transient即冗余字段,不与数据库任何字段对应。
2.Dao类,
public interface TExamPublishRecordDao extends Mapper<TExamPublishRecord> {
}
Mapper其实际上是继承于几个Mapper
@RegisterMapper
public interface Mapper<T> extends BaseMapper<T>, ExampleMapper<T>, RowBoundsMapper<T>, Marker {
}
3.service层使用
举例说明新增:tExamPublishRecordDao.insert(tExamPublishRecord);
tExamPublishRecord是实体类对象
面对比较复杂的,可以采用ExampleMapper中的方法,举例说明多条件查询
Example example = new Example(TExamPublishRecord.class);
// 多条件查询
example.createCriteria().andLike("title","%"+tExamPublishRecord.getTitle()+"%").andEqualTo(tExamPublishRecord.getPublisher())
.andBetween("createdTime",((ExamPublishRecordQueryConditionDTO) queryVO).getLeftPlanTime(),((ExamPublishRecordQueryConditionDTO) queryVO).getRightPublishTime())
.andBetween("startTime",((ExamPublishRecordQueryConditionDTO) queryVO).getLeftPlanTime(),((ExamPublishRecordQueryConditionDTO) queryVO).getRightPlanTime());
Page page = (Page) tExamPublishRecordDao.selectByExample(example);
ExampleMapper中的方法
/**
* 根据Example条件进行查询
*/
public List<T> selectByExample(Object example);
/**
* 根据Example条件进行查询,若有多条数据则抛出异常
*/
public T selectOneByExample(Object example);
/**
* 根据Example条件进行查询总数
*/
public int selectCountByExample(Object example);
/**
* 根据Example条件删除数据,返回删除的条数
*/
public int deleteByExample(Object example);
/**
* 根据Example条件更新实体`record`包含的全部属性,null值会被更新,返回更新的条数
*/
public int updateByExample(T record, Object example);
/**
* 根据Example条件更新实体`record`包含的不是null的属性值,返回更新的条数
*/
public int updateByExampleSelective(T record, Object example);
4.controller再调用service层就ok了