使用方法
在SpringBoot项目中
pom文件中添加依赖
<dependency>
<groupId>net.oschina.durcframework</groupId>
<artifactId>fastmybatis-spring-boot-starter</artifactId>
<version>2.2.1</version>
</dependency>
数据库新建user表
CREATE TABLE `user` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '用户id',
`username` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '用户名',
`password` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '密码',
`avatar` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '头像',
`nick_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '昵称',
`address` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '地址',
`email` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '邮箱',
`birthday` datetime DEFAULT NULL COMMENT '生日',
`age` int DEFAULT NULL COMMENT '年龄',
`create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
`delete_flag` int DEFAULT NULL COMMENT '0:未删除 1:已删除',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=46 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
添加对应的实体类User.java
public class User {
private Integer id;
private String username;
private String password;
private String nickName;
private String avatar;
private String address;
private String email;
@DateTimeFormat(pattern="yyyy-MM-dd")
@JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
private LocalDateTime birthday;
private Integer age;
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime createTime;
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
private LocalDateTime updateTime;
private Integer deleteFlag;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public LocalDateTime getBirthday() {
return birthday;
}
public void setBirthday(LocalDateTime birthday) {
this.birthday = birthday;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public LocalDateTime getCreateTime() {
return createTime;
}
public void setCreateTime(LocalDateTime createTime) {
this.createTime = createTime;
}
public LocalDateTime getUpdateTime() {
return updateTime;
}
public void setUpdateTime(LocalDateTime updateTime) {
this.updateTime = updateTime;
}
public Integer getDeleteFlag() {
return deleteFlag;
}
public void setDeleteFlag(Integer deleteFlag) {
this.deleteFlag = deleteFlag;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username=" + username +
", password=" + password +
", nickName=" + nickName +
", address=" + address +
", email=" + email +
", birthday=" + birthday +
", age=" + age +
", createTime=" + createTime +
", updateTime=" + updateTime +
", deleteFlag=" + deleteFlag +
"}" ;
}
}
UserService.java
//实现通用接口
@Service
public class UserService implements IService<User/*实体类*/,Integer/*主键类型*/> {
}
Mapper类UserMapper.java
public interface TUserMapper extends CrudMapper<User/*实体类*/,Integer/*主键类型*/> {
}
Mapper方法列表
/**
* 根据对象查询,可以传主键值,也可以传整个对象
*
* @param id
* @return 返回实体对象,没有返回null
*/
Entity getById(ID id);
/**
* 根据条件查找单条记录
* @param query 查询条件
* @return 返回实体对象,没有返回null
*/
Entity getByQuery(@Param("query")Query query);
/**
* 根据字段查询一条记录
* @param column 数据库字段名
* @param value 字段值
* @return 返回实体对象,没有返回null
*/
Entity getByColumn(@Param("column")String column,@Param("value")Object value);
/**
* 查询总记录数
*
* @param query 查询条件
* @return 返回总记录数
*/
long getCount(@Param("query")Query query);
/**
* 根据字段查询集合
* @param column 数据库字段名
* @param value 字段值
* @return 返回实体对象集合,没有返回空集合
*/
List<Entity> listByColumn(@Param("column")String column,@Param("value")Object value);
/**
* 条件查询
*
* @param query 查询条件
* @return 返回实体对象集合,没有返回空集合
*/
List<Entity> list(@Param("query")Query query);
/**
* 查询指定字段结果
* @param columns 返回的字段
* @param query 查询条件
* @return 返回结果集
*/
List<Map<String, Object>> listMap(@Param("columns")List<String> columns, @Param("query")Query query);
/**
* 新增,新增所有字段
*
* @param entity
* @return 受影响行数
*/
int save(Entity entity);
/**
* 新增(忽略null数据)
* @param entity
* @return 受影响行数
*/
int saveIgnoreNull(Entity entity);
/**
* 批量添加,只支持mysql,sqlserver2008及以上数据库.<br>
* <strong>若要兼容其它版本数据库,请使用saveMulti()方法</strong>
* @param entitys
* @return
*/
int saveBatch(@Param("entitys")List<Entity> entitys);
/**
* 批量添加,兼容更多的数据库版本.<br>
* 此方式采用union all的方式批量insert,如果是mysql或sqlserver2008及以上推荐saveBatch()方法.
* @param entitys
* @return
*/
int saveMulti(@Param("entitys")List<Entity> entitys);
/**
* 修改,修改所有字段
*
* @param entity
* @return 受影响行数
*/
int update(Entity entity);
/**
* 根据主键更新不为null的字段
*
* @param entity
* @return 受影响行数
*/
int updateIgnoreNull(Entity entity);
/**
* 根据条件批量更新
*
* @param entity 待更新的数据,可以是实体类,也可以是Map{@literal<String,Object>}
* @param query 更新条件
* @return 受影响行数
*/
int updateByQuery(@Param("entity") Object entity, @Param("query") Query query);
/**
* 删除
*
* @param entity
* @return 受影响行数
*/
int delete(Entity entity);
/**
* 根据id删除
*
* @param id 主键id
* @return 受影响行数
*/
int deleteById(ID id);
/**
* 根据条件删除
*
* @param query
* @return 受影响行数
*/
int deleteByQuery(@Param("query")Query query);
测试类MapperTest.java
@SpringBootTest
@RunWith(SpringRunner.class)
public class MapperTest {
@Resource
private UserMapper mapper;
@Test
public void test() {
User byId = mapper.getById(1);
System.out.println(byId);
}
@Test
public void test2() {
//查询姓名为张三,并且年龄为12岁的用户
Query query = new Query().eq("username", "张三").eq("age", 12);
List<User> users = mapper.list(query);
System.out.println(users);
}
@Test
public void test3() {
//查询年龄为10,20,30的用户
Query query = new Query().in("age", Arrays.asList(10, 11, 12));
List<User> users = mapper.list(query);
System.out.println(users);
}
@Test
public void test4() {
//查询创建日期大于2022-01-01的用户
Query query = new Query().gt("create_time", "2022-01-01");
List<User> users = mapper.list(query);
System.out.println(users);
}
@Test
public void test5() {
//查询住址北京市的,年龄大于等于10岁的用户,按年龄降序
Query query = new Query().eq("address","北京市").ge("age",10).orderby("age", Sort.DESC);
List<User> users = mapper.list(query);
System.out.println(users);
}
@Test
public void test6(){
//查询年龄大于10,每页两条数据
Query query = new Query().gt("age",10).page(1,2);
List<User> users = mapper.list(query);
System.out.println(users);
}
@Test
public void test7(){
User user = new User();
//查询用户地址、用户名不为空的用户,返回集合
Query query=new Query().eq(StringUtils.isNotBlank(user.getAddress()),"address",user.getAddress())
.eq(StringUtils.isNotBlank(user.getUsername()),"username",user.getUsername());
List<User> users = mapper.list(query);
//获取总记录条数
long count = mapper.getCount(query);
System.out.println(count);
users.forEach(System.out::println);
}
}