在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:DynamicHibernate开源软件地址:https://gitee.com/wstv/DynamicHibernate开源软件介绍:项目不存在商业价值,广大学习爱好者可根据自己的喜好重构融入到自己的hibernate项目中,项目就是一个简单的basedao的封装查询 方便快捷和生硬的hibernate 相比较 优点在于 :“灵活的查询方式、灵活的ql语句管理、自动实现sql/hql语句的切换执行。” 因为模板采用的是freemarker技术,所以:语句模板块类似于mybatis 配置文件方式,支持各种if for相关标签语法 。 相关用法请参见 freemarker官方语法,简单易懂 分分钟上手。 项目简单的实现方式就是 使用freemarke api来读取模板缓存文件节点的内容 读取到之后就是对应的sql 或hql 然后由hibernate 来执行语句来执行。项目中大多使用了泛型技术,比如返回值的封装 等等。 支持各种各样的方式查询。实现了简单的“CRUD” 不像硬编码的方式 将sql或者hql写死到代码里面维护起来很复杂。使得项目代码看起来也比较杂乱。 這样封装以后代码是代码 hql/sql 单独存在 便于管理。 QQ:1099532501 职业:JAVA DEVELOPER ArrayList<Condition> conditions = new ArrayList<Condition>(); ######普通字段筛选条件 String id = "06f8f0ef-0916-40c7-a354-2457e628293f"; conditions.add(new Condition("id",id, Op.EQ, OpType.AND)); ######关联对象字段筛选条件 String deptName = "研发部2"; conditions.add(new Condition("dept.name",deptName, Op.EQ, OpType.AND)); ######多字段组合条件 column ="xxx,xxx,xxx" 中间用英文逗号隔开即可。 意思为需要满足当前where 1=1 and (name='wstv' and sex='wstv')//如果是 GROUP_AND_OR = where 1=1 or (name='wstv' or sex='wstv') conditions.add(new Condition("name,sex","1", Op.EQ, OpType.GROUP_AND_AND)); List<Employee> list = employeeService.findList(conditions, null); System.out.println(JSON.toJSONString(list)); ######order by 用法 conditions.add(new Condition("name","1", Op.EQ, OpType.AND)); LinkedHashMap<String, OrderType> orderby = new LinkedHashMap<String, OrderType>(); orderby.put("name",OrderType.ASC); List<Employee> list = employeeService.findList(null, orderby); System.out.println(JSON.toJSONString(list)); ######分页用法 conditions.add(new Condition("dept.name","研发部2", Op.EQ, OpType.AND)); LinkedHashMap<String, OrderType> orderby = new LinkedHashMap<String, OrderType>(); orderby.put("name",OrderType.ASC); //pageIndex 第几页 pageSize = 每页要显示多少条 PageBean<Employee> page = employeeService.findPage(conditions, orderby, 1, 10); System.out.println(JSON.toJSONString(page)); ######动态模板的用法 hql方式 String queryName = "emp.findById"; Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("id","06f8f0ef-0916-40c7-a354-2457e628293f"); PageBean<Employee> pageBean = baseDao.queryByDynamicName(queryName, 1,10, Employee.class,null, parameters); List<Employee> data = pageBean.getData(); if (data!=null && !data.isEmpty()){ System.out.println(JSON.toJSONString(data)); } ######动态模板的用法 sql 方式 //动态模板语句返回的字段,需要和模板的sql字段顺序保持一致 String[] fields = new String[]{ "id", "name" }; String queryName = "emp.findByName"; Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("id","06f8f0ef-0916-40c7-a354-2457e628293f"); PageBean<Map<String, Object>> pageBean = employeeService.findByNamedQuery(queryName, 1, 10, fields, parameters); List<Map<String, Object>> data = pageBean.getData(); if (data!=null && !data.isEmpty()){ for(Map map : data){ System.out.println(map.get("id")); } } |
请发表评论