<dependency>
<groupId>com.cnbbx</groupId>
<artifactId>cnbbx-mybatis</artifactId>
<version>1.3.1</version>
</dependency>
100%业务不需要再写sql以及配置文件,支持多操作符,最重要一点,不需要太复杂的使用,可以xml+mapper混合使用,并且代码方式和传统使用mybatis的区别就是绑定了通用mapper而已。如果有特殊业务,也支持在dao基础上进行配置文件方式进代码编写工作
1.支持多种语句操作,如eq,neq,ge,gt,le,lt,is null,not null,is empty,not empty,in,not in,exp以上操作都为AND,目前不支持OR
2.支持多张表联查,依旧不写sql,同时也支持以上多种操作符。只需要简单配置一下注解即可。
3.支持字段別名,cas需求就很好处理了哦。对同一个字段可以取别名多次set。
4.有工具类,直接生成数据库建表文件,对象建模。
目前不支持OR,不过可以通过exp实现OR。
参考如下几个实现类 1.QueryBuilder 实现查询业务 2.UpdateBuilder 实现更新业务,支持根据查询条件更新数据 3.InsertBuilder 实现插入业务 4.DeleteBuilder 实现删除业务
定义领域对象
@Table(table = "user_info")//数据库表名
public class UserInfo implements Serializable {
@Column(length = "20")
private Long uid;
@Column(length = "50", desc = "用户昵称")
private String uname;
@Column(length = "50", desc = "用户手机")
private String uphone;
@Column(length = "50")
private String uaddress;
//省略get/set
}
多个链表查询定义方式
@Table(table = "more", moreTable = "user_info as uinfo,user_order as uorder", moreOn = "uinfo.uid=uorder.uid")
只是单独两个链表查询
@Table(table = "user_info", tableAs = "uinfo", joinTable = "user_order", joinTableAs = "uorder", tableOn = "uid", joinTableOn = "uid", joinType = JoinType.inner)
定义一个mapper,不需要实现方法,泛型指定返回对象
public interface UserInfoMapper extends MysqlBaseMapper<UserInfo> {}
定义一个dao接口
public interface UserInfoDao extends MySqlBaseDao<UserInfo> {}
实现dao,对mapper进行绑定,指定mapper的class,dao也可以用传统的xml方式实现自己的业务,dao绑定mapper为了调用mapper通用方法,也还原了大家经常使用mybatis的方式。
@Service
public class UserInfoDaoImpl extends AbstractMySqlBaseDao<UserInfo> implements UserInfoDao {
@Override
public Class mapperClass() {
return UserInfoMapper.class;
}
}
查询单个对象
QueryBuilder queryBuilder = QueryBuilder.build(UserInfo.class).eq("uid",1);
UserInfo userInfo = userInfoDao.one(queryBuilder);
查询list
QueryBuilder queryBuilder = QueryBuilder.build(UserInfo.class).eq("uname","jinge");
List<UserInfo> userInfos = userInfoDao.list(queryBuilder);
查询总数
QueryBuilder queryBuilder = QueryBuilder.build(UserInfo.class).eq("uphone","134********");
int count = userInfoDao.count(queryBuilder);
查询当前页数据
QueryBuilder queryBuilder = QueryBuilder.build(UserInfo.class).page(1).size(10).eq("uid",1);
PageData page = userInfoDao.page(queryBuilder);
更新数据
UpdateBuilder update = UpdateBuilder.build(UserInfo.class).set("uphone",mobile).set("token", token).eq("uid", 1);
int r = userInfoDao.update(update);
插入数据
UserInfo userInfo = new UserInfo();
userInfo.setId(UUIDUtils.uuid());
userInfo.setToken(token);
userInfo.setChannel(channel);
userInfo.setStatus_at(StatusAt.active.getCode());
userInfo.setClient_version(clientVersion);
userInfo.setCredit(0);
userInfo.setIp(ip);
userInfo.setPhone(phone);
userInfo.setPassword(sourcePwd);
userInfo.setSalt(salt);
userInfo.setCreate_at(now());
userInfo.setUpdate_at(now());
userInfo.setOs(os);
InsertBuilder insert = InsertBuilder.build(UserInfo.class).set(userInfo);
int r = userInfoDao.insert(insert);
删除数据
DeleteBuilder delete = DeleteBuilder.build(UserInfo.class).eq("uid", 1);
int r = userInfoDao.delete(delete);
因项目需求,为了快速开发,花了几天时间简单封装了mybatis3,支持多种操作符的查询和写入,欢迎提出意见!
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。