最近项目使用了SpringBoot+TKMytis框架,期间遇到一些问题,顺便记一下。
一、框架配置
配置的话非常简单,我用的是SpringBoot,直接引入:
tk.mybatis
mapper-spring-boot-starter
2.0.3-beta1
tk.mybatis
mapper
4.0.0
Mybatis的以及分页插件等就不写了。
创建一个BaseMapper
public interface BaseMapper extends tk.mybatis.mapper.common.BaseMapper, MySqlMapper, IdsMapper, ConditionMapper,ExampleMapper{
}
这5个Mapper待会我会详细讲解。
创建BaseService继承自BaseMapper
public interface BaseService extends BaseMapper{
}
以及BaseService的实现类BaseServiceImpl implements BaseService
public abstract class BaseServiceImpl implements BaseService{
}
Service里需实现部分方法,详细代码在后边。
这样我们就基本完成了配置。
二、类配置方法
1、实体类
创建一个实体类与数据库进行映射,此时我们使用JPA的注解:
package com.capol.entity;
import java.sql.Timestamp;
import javax.persistence.Column;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import com.capol.base.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
/**
* @author lizihao
* @version 2018年07月31日
* 用户角色
*/
@Data
@EqualsAndHashCode(callSuper=false)
@Table(name="t_sys_user_role")//设置数据库中表名字
public class UserRole extends BaseEntity{
/**
* 主键
*/
@Column(name = "f_id")
@Id
private String fId;
/**
* 用户ID
*/
@Column(name = "f_user_id")
private String fUserId;
/**
* 用户名
*/
@Transient
private String fUserName;
}
其中@Table即数据表表名,@Column即列名,@Id作为主键,需要注意,@Id注解不可有多个,@Transient即冗余字段,不与数据库任何字段对应。
分享一个小技巧,实际项目中我们可能存在多数据源的情况,如果使用的是sqlserver,且多个数据库均在同一台服务器下且配置的账号均拥有权限,
则@Table注解中可以写成“{数据库名}.{架构名}.{表名}”,如:@Table(name="db.dbo.tableName")
而不需要再额外配置数据源
2、Service类
这里主要是实现了