• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

mybatis-mapper: 简化mybatis框架。专注生产力,80%业务不写sql。

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

mybatis-mapper

开源软件地址:

https://gitee.com/lan0217/mybatis-mapper

开源软件介绍:

#MyBatis通用Mapper

##方便的使用MyBatis单表的增删改查

为啥要写这个? 因为我最近做了个项目,必须用mybatis,重点是我不想写重复的sql

通用mapper有好多了,为啥要重新写一个? 本来是不想写的,但是我看了很多通用mapper,我觉得不满足需求,只支持=号操作,咋个弄呢。。。。遇到复杂点点的业务就蛋疼了。。。

写这个目的是什么? 80%业务不需要再写sql以及配置文件,支持多操作符,最重要一点,不需要太复杂的使用,可以xml+mapper混合使用,并且代码方式和传统使用mybatis的区别就是绑定了通用mapper而已。如果有特殊业务,也支持在dao基础上进行配置文件方式进代码编写工作

后续规划是什么?

1.先做一个扩展简化mybatis开发    2.看是不是有必要直接搞个mybatis分支,在源码上扩展,简化开发  3.重复造个轮子???实现orm,mvc,ioc,aop,cache这些。。。 4.至少要维护个一年吧。。。

##优点?##支持单表操作,两张表联查操作,不支持大于两张表操作

1.支持多种语句操作,如eq,ne,ge,gt,le,lt,is null,not null,is empty,not empty,in,not in,以上操作都为AND,目前不支持OR

2.支持两张表联查,依旧不写sql,同时也支持以上多种操作符。只需要简单配置一下注解即可。

3.支持字段別名,cas需求就很好处理了哦。对同一个字段可以取别名多次set。

4.有工具类,直接生成数据库建表文件,对象建模。

##缺点?

目前id方案不支持数据库自增,采取编码setId的方案,后续会实现id生成器。

没实现oracle。。。只实现了mysql数据库支持。

##使用方式

参考如下几个实现类1.QueryBuilder 实现查询业务2.UpdateBuilder 实现更新业务,支持根据查询条件更新数据3.InsertBuilder 实现插入业务4.DeleteBuilder 实现删除业务

##准备开始

定义领域对象

@Alias("user_info")@Table(table = "user_info")public class UserInfo extends BasicModel<UserInfo> {        @Column(length = "200", desc = "用户头像")    private String poster;    @Column(length = "50")    private String nickname;        //省略get/set}

mybatis配置文件扫描领域对象,如想使用mybatis的扫描机制,切记数据库字段和对象字段要一致,如不一致请到xml里面去配置映射关系,目前没找到其他实现方式,下一版本直接在mybatis源码扩展功能,少量改动源码。

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"        "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration>    <typeAliases>        <package name="com.xxx.model"/>    </typeAliases></configuration>

定义一个mapper,不需要实现方法,泛型指定返回对象

public interface UserInfoMapper extends MysqlBaseMapper<UserInfo> {}

定义一个dao接口

public interface UserInfoDao extends MySqlBaseDao<UserInfo> {}

实现dao,对mapper进行绑定,指定mapper的class,dao也可以用传统的xml方式实现自己的业务,dao绑定mapper为了调用mapper通用方法,也还原了大家经常使用mybatis的方式。

@Repositorypublic class UserInfoDaoImpl extends AbstractMySqlBaseDao<UserInfo> implements UserInfoDao {    @Override    public Class mapperClass() {        return UserInfoMapper.class;    }}

spring配置里面加入如下,com.xxxx.mapper为项目定义mapper目录

 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">        <property name="basePackage" value="com.xxxx.mapper"/>        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> </bean>  <!-- myBatis Sql映射文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">     <property name="dataSource" ref="multipleDataSource"/>     <property name="configLocation">         <value>classpath:mapper/entity-config.xml</value>     </property>     <!--        依旧可以使用mybatis配置文件方式        <property name="mapperLocations" value="classpath*:mapper/*.xml"/>     --> </bean>

##开始使用了,注意:所有property字符串都为java类字段定义,非数据库字段。

查询单个对象

QueryBuilder queryBuilder = QueryBuilder.build(UserInfo.class).eq("id",1);UserInfo userInfo = userInfoDao.one(queryBuilder);

查询list

QueryBuilder queryBuilder = QueryBuilder.build(UserInfo.class).eq("status",1);List<UserInfo> userInfos = userInfoDao.list(queryBuilder);

查询总数

QueryBuilder queryBuilder = QueryBuilder.build(UserInfo.class).eq("status",1);int  count = userInfoDao.count(queryBuilder);

查询当前页数据

QueryBuilder queryBuilder = QueryBuilder.build(UserInfo.class).page(1).size(10).eq("status",1);PageData  page = userInfoDao.page(queryBuilder);

更新数据

UpdateBuilder update = UpdateBuilder.build(UserInfo.class).set("last_login_time",time).set("token", token).eq("id", 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("id", 1);int r = userInfoDao.delete(delete);

##作者信息

因项目需求,为了快速开发,花了一天时间简单封装了mybatis3,支持多种操作符的查询和写入,欢迎提出意见!作者邮箱: [email protected]


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap