作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO
联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬
最核心的内容前两篇已经讲完了,这一篇只有代码:

先看demo目录下的三个文件:
DemoApplication.java
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
User.java
package com.example.demo;
import com.example.demo.mybatisplus.annotations.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
/**
* @author mx
*/
@Data
@TableName("t_user")
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Long id;
private String name;
private Integer age;
private Date birthday;
}
UserMapper.java
package com.example.demo;
import com.example.demo.mybatisplus.AbstractBaseMapper;
/**
* @author mx
*/
public class UserMapper extends AbstractBaseMapper {
}
mybatisplus下AbstractBaseMapper.java
package com.example.demo.mybatisplus;
import com.example.demo.mybatisplus.annotations.TableName;
import com.example.demo.mybatisplus.core.JdbcTemplate;
import com.example.demo.mybatisplus.query.QueryWrapper;
import com.example.demo.mybatisplus.query.SqlParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
/**
* Mapper基类
*
* @author mx
*/
public abstract class AbstractBaseMapper {
private static Logger logger = LoggerFactory.getLogger(AbstractBaseMapper.class);
private JdbcTemplate jdbcTemplate = new JdbcTemplate();
private Class beanClass;
private final String TABLE_NAME;
private static final String DEFAULT_LOGICAL_TYPE = " and ";
public AbstractBaseMapper() {
// DO对象的Class
beanClass = (Class) ((ParameterizedType) this.getClass()
.getGenericSuperclass())
.getActualTypeArguments()[0];
// DO对应的表名 TODO 非空判断及默认处理
TABLE_NAME = beanClass.getAnnotation(TableName.class).value();
}
public T select(QueryWrapper queryWrapper) {
List list = this.list(queryWrapper);
if (!list.isEmpty()) {
return list.get(0);
}
return null;
}
public List list(QueryWrapper queryWrapper) {
StringBuilder sqlBuilder = new StringBuilder("SELECT * FROM ").append(TABLE_NAME).append(" WHERE ");
List