Lcbatis Mybatis 增强工具开源项目

我要开发同款
匿名用户2017年08月13日
55阅读
开发技术Java
所属分类程序开发、ORM/持久层框架
授权协议Apache

作品详情

lcbatis是mybatis的增强工具,在mybaits的基础上真正实现零配置扩展,对于一般的sql语句可以告别xml了。

用法(零配置,超简单)

把根目录那个Lcbatis.jar包下载下来导入到项目里面就OK了。 (重要:因为我小小修改了mybatis源代码的几个地方,所以Lcbatis.jar的导入的优先级必须要高于mybaits.jar,如果你没改过包名,默认是优先的)

获取Service对象,Serviceservice=Session.getService("表名");

执行Service的方法,比如下面这句是根据主键id删除行,service.deleteById(27);

更多教程(可以将源代码下载下来看test包里的案例)

/* 执行添加操作,参数是按顺序传递 * sql:insert into laocheng_demo (`s`,`i`,`cid`) values (#{s},#{i},#{cid}) * param:abc(String), 1(Integer), 2(Integer) * return:自增的id */public void t1(){Service service = Session.getService("demo");int lastId=service.setData("abc",1,2).insert("s","i","cid");System.out.println(lastId);}/* 执行添加操作,参数是按map的key进行匹配 * sql:insert into laocheng_demo (`s`,`i`,`cid`) values (#{s},#{i},#{cid}) * param:abcde(String), 1(Integer), 2(Integer) * return:自增的id */public void t2(){Service service = Session.getService("demo");HashMap<String, Object> map=new HashMap<>();map.put("cid", 2);map.put("i", 1);map.put("s", "abcde");int lastId=service.setData(map).insert("s","i","cid");System.out.println(lastId);}/* 添加一个实体对象到数据库,参数自动匹配“表的字段名”与“实体的属性名”,匹配成功的属性将提交到数据库 * sql:insert into laocheng_demo (`i`,`s`,`cid`) values (#{i},#{s},#{cid}) * param:5(Integer), aaa(String), 45(Integer) * 自增id将自动映射到实体属性中(必须名字相同,类型也相同) */public void t3(){Service service = Session.getService("demo");Demo demo=new Demo();demo.setI(5);demo.setS("aaa");demo.setCid(45);service.insert(demo);Vardump.print(demo);//打印查看结果}/* 执行删除操作 * sql:delete from laocheng_demo  where tid=#{tid} * param:1(Integer) */public void t4(){Service service = Session.getService("demo");//where("tid=1")也可以,但如果1是变量的话不建议使用字符串拼接,不安全容易被注入service.where("`tid`=#{tid}").setData(1).delete();}/* 根据主键id执行删除操作 * sql:delete from laocheng_demo where tid=#{tid} * param:27(Integer) */public void t5(){Service service = Session.getService("demo");//直接传主键id的值,程序会自动获取主键名并删除行service.deleteById(27);}/* 执行修改操作,参数会按setData的顺序读取,条件参数要写在结尾,当然如果你用参数改用hashmap,可以自动匹配key的值,不需要考虑顺序 * sql:update laocheng_demo set `s`=#{s},`i`=#{i},`cid`=#{cid}  where tid=#{tid} * param:abc(String), 123(Integer), 456(Integer), 50(Integer) */public void t6(){Service service = Session.getService("demo");//直接传主键id的值,程序会自动获取主键名并删除行service.where("tid=#{tid}").setData("abc",123,456,50).update("s","i","cid");}/* 根据实体对象保存修改,系统会根据属性自动匹配主键以及被修改的字段名 * sql:update laocheng_demo set `i`=#{i},`s`=#{s},`cid`=#{cid} where tid=#{tid} * param:5(Integer), aaa(String), 45(Integer), 50(Integer) */public void t7(){Service service = Session.getService("demo");Demo demo=new Demo();demo.setTid(50);//主键demo.setI(5);demo.setS("aaa");demo.setCid(45);service.update(demo);}/* 拼装sql查询,除了执行必须排在最后,其他顺序不限制 * sql:select cid,s from laocheng_demo  where tid>#{tid} and s=#{s}  order by tid desc  limit 0,10 * param:50(Integer), afdfsd(String) */public void t8(){Service service = Session.getService("demo");Object o=service.where("tid>#{tid} and s=#{s}")//设置条件   .column("cid","s")//设置要查询的字段   .limit(0, 10)//取行数,仅支持mysql   .order("tid desc")//排序       .setData(50,"afdfsd")//传递参数       .selectList();//返回一个list集合,适用于多条数据 //.selectMap();//返回一个map,适用于一条数据 //.selectOne(Demo.class);//返回一个实体对象 //.selectCount();//返回行数Vardump.print(o);//打印查看结果}/* 对于复杂的sql,多表查询,可以用sql()方法,但还是建议老老实实写xml,不然你不如用hibernate * sql:select * from laocheng_demo a,laocheng_demochild b  where a.cid=b.cid  order by a.tid desc  limit 0,10 * param:50(Integer), afdfsd(String) */public void t9(){Service service = Session.getService("demo");List<HashMap<String, Object>> list = service   .sql("select * from laocheng_demo a,laocheng_demochild b")       .where("a.cid=b.cid")//设置条件   .limit(0, 10)//取行数,仅支持mysql   .order("a.tid desc")//排序       .setData(50,"afdfsd")//传递参数       .selectList();//返回一个list集合,适用于多条数据Vardump.print(list);//打印查看结果}/* * 可以在数据源中配置下面两个属性 * <property name="servicePackage" value="cn.lcfms.service.{table}Service"/> * <property name="tablePrefix" value="laocheng_"/> * servicePackage为你service所在的包为cn.lcfms.service以及service的命名规范为“表名+Service” *  * tablePrefix为表前缀 * 没配置了tablePrefix需要写表的完整名字Session.getService("laocheng_demo"),laocheng_demo是表名 * 配置了tablePrefix可以简化为Session.getService("demo") *  * 这样你就可以像下面这样直接获取service对象 */@Testpublic void t10(){DemoService service = (DemoService) Session.getService("demo");service.test1();service.test2();}/* * 执行分页查询 * 目前只支持mysql数据库,如果是多表查询,可以使用sql("sql语句").selectPage(10,7,request); * 可以单独使用Page p=new Page(总记录数, 每页行数, 页码数, request)来获取分页的页码 * p.first()//首页 * p.end()//末页 * p.pagelist()//页码列表 * p.count()//统计信息 * p.nowpage()//当前页信息 *  */public void t11(HttpServletRequest request){Map<String, Object> map=Session.getService("item").column("itemId").where("itemId>#{itemId}").setData(10).order("itemId desc").selectPage(10,7,request);Vardump.print(map);//推荐用来在后台查看各种类型的数据}
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论