Fast Mybatis

使用方法

在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);
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小火柴127

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值