1. 配置pom,引入mysql mybatis tkmybatis 线程池和分页的依赖
<properties>
<mybatis-version>2.1.2</mybatis-version>
<mysql-version>5.1.46</mysql-version>
<alibaba-version>1.1.22</alibaba-version>
<pagehelper-version>1.2.12</pagehelper-version>
<mybatistk-version>2.1.5</mybatistk-version>
</properties>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>${mybatis-version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>${alibaba-version}</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>${pagehelper-version}</version>
</dependency>
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>${mybatistk-version}</version>
</dependency>
2. yml配置:
mybatis:
type-aliases-package: com.imblock.core.web.*.model
mapper-locations: classpath:mapper/*/*.xml
configuration:
mapUnderscoreToCamelCase : true
cacheEnabled: true
callSettersOnNulls: true
mapper:
mappers: com.imblock.common.util.sql.MyMapper
not-empty: false
identity: MYSQL
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
spring:
data:
#mysql
datasource:
driverClassName: com.mysql.jdbc.Driver
url: jdbc:mysql://192.168.1.21:3306/im-block?autoReconnect=true&useUnicode=true&allowMultiQueries=true&characterEncoding=utf-8
username: qwe
password: 123456
3. 代码层:
3.1 自定义mapper
public interface MyMapper<T>
extends
BaseMapper<T>,
ConditionMapper<T>,
IdsMapper<T>,
InsertListMapper<T>{
}
3.2 服务类
public interface Service<T> {
void save(T model);//持久化
void deleteById(Long id);//通过主鍵刪除
void deleteByIds(String ids);//批量刪除 eg:ids -> “1,2,3,4”
void update(T model);//更新
Object findById(Long id);//通过ID查找
Integer count(Condition condition);
List<T> findByIds(String ids);//通过多个ID查找//eg:ids -> “1,2,3,4”
List<T> findByCondition(Condition condition);//根据条件查找
List<T> findAll();
}
3.3 抽象类
public abstract class AbstractService<T> implements Service<T> {
@Autowired
protected MyMapper<T> mapper;
public void deleteById(Long id) {
mapper.deleteByPrimaryKey(id);
}
public void deleteByIds(String ids) {
mapper.deleteByIds(ids);
}
public Object findById(Long id) {
return mapper.selectByPrimaryKey(id);
}
public List<T> findByIds(String ids) {
return mapper.selectByIds(ids);
}
public List<T> findByCondition(Condition condition) {
return mapper.selectByCondition(condition);
}
public List<T> findAll() {
return mapper.selectAll();
}
@Override
public Integer count(Condition condition) {
return mapper.selectCountByCondition(condition);
}
}
3.4 dao和service
model
@Data
public class OperateLog {
/**
*
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
}
dao
public interface OperateLogDao extends MyMapper<OperateLog> {
}
serivce
public interface OperateLogService extends Service<OperateLog> {
}
@Service
@Transactional(rollbackFor = {Exception.class})
public class OperateLogServiceImpl extends AbstractService<OperateLog> implements OperateLogService {
@Autowired
private OperateLogDao operateLogDao;
@Override
public void save(OperateLog model) {
model.setCreateTime(new Date());
operateLogDao.insertSelective(model);
}
@Override
public void update(OperateLog model) {
operateLogDao.updateByPrimaryKeySelective(model);
}
}