bboss持久层ormaping机制详解

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: bboss持久层针对db操作即提供了原始sql语句的支持,又提供了简单而高效的ormapping机制,本文详细介绍之 1.可变参数的原生sql API 删除 SQLExecutor.delete("delete from LISTBEAN"); SQLExecutor.
bboss持久层针对db操作即提供了原始sql语句的支持,又提供了简单而高效的ormapping机制,本文详细介绍之

1.可变参数的原生sql API

删除
SQLExecutor.delete("delete from LISTBEAN");
SQLExecutor.delete("delete from LISTBEAN where id=?",1);
插入
sql ="insert into LISTBEAN(ID,FIELDNAME,FIELDLABLE,FIELDTYPE) " +
"values(?,?,?,?)";
SQLExecutor.insertWithDBName("bspf", sql,DBUtil.getNextPrimaryKey("bspf", "ListBean"),"insertOpreation","ttyee","int");
查询
sql = "select * from LISTBEAN where fieldName=?";
List<ListBean> beans = SQLExecutor.queryListWithDBName(ListBean.class,"bspf",sql,"testttt");
更新
sql = "update LISTBEAN set FIELDNAME=? where ID=?";
SQLExecutor.update(sql, "mytest",100);
2.or mapping机制
bboss 针对增删改查都提供了or mapping机制,增加、修改、删除的or mapping机制基本一致,主要是在sql语句中使用的模板变量名称和bean属性保持一致即可。


ListBean lb = new ListBean();
lb.setFieldLable("tttt");
lb.setFieldName("testttt");
lb.setFieldType("int");
lb.setIsprimaryKey(false);
lb.setRequired(true);
lb.setSortorder("ppp");
lb.setFieldLength(20);
lb.setIsvalidated(6);


//用List存放Bean,在某特定的连接池中进行crud操作
List<ListBean> beans = new ArrayList<ListBean>();
beans.add(lb);
lb = new ListBean();
lb.setFieldLable("sss");
lb.setFieldName("ss");
lb.setFieldType("int");
lb.setIsprimaryKey(false);
lb.setRequired(true);
lb.setSortorder("ppp");
lb.setFieldLength(20);
lb.setIsvalidated(6);
beans.add(lb);

lb = new ListBean();
lb.setFieldLable("sss");
lb.setFieldName("ss556");
lb.setFieldType("int");
lb.setIsprimaryKey(false);
lb.setRequired(true);
lb.setSortorder("ppp");
lb.setFieldLength(20);
lb.setIsvalidated(6);
beans.add(lb);
插入:
String sql = "insert into LISTBEAN(ID,FIELDNAME,FIELDLABLE,FIELDTYPE,SORTORDER,ISPRIMARYKEY,REQUIRED,FIELDLENGTH,ISVALIDATED) " +
"values(#[id],#[fieldName],#[fieldLable],#[fieldType],#[sortorder]," +
"#[isprimaryKey],#[required],#[fieldLength],#[isvalidated])";
SQLExecutor.insertBeans("bspf",sql,beans);

修改:
sql ="update LISTBEAN set FIELDNAME=#[fieldName] where ID=#[id]";
SQLExecutor.updateBeans(sql,beans);

删除:
sql = "delete from LISTBEAN where ID=#[id]";
SQLExecutor.deleteBeans(sql, beans);

上面的都是集合批处理操作,单个对象操作,只需要将原来的接口中的s去掉,然后sql是一样的,最后使用单个bean对象:
SQLExecutor.insertBean("bspf",sql,bean);
SQLExecutor.updateBean(sql,bean);
SQLExecutor.deleteBean(sql, bean);

查询的or mapping机制是自动将select中的查询字段名称与bean的属性进行映射,不需要显示指定:

sql ="select * from LISTBEAN where FIELDNAME=#[fieldName]";
beans = (List<ListBean>) SQLExecutor.queryListBean(ListBean.class, sql, conditionbean);

po对象ListBean中的属性与select *中得到的column名称会自动进行映射,自动映射规则如下:
规则一 @Column注解指定column和bean field进行映射,优先级最高,例如:
@Column(name="tableColumnName")
private String fieldType;
bboss在映射时首先检查字段有没有被Column注解映射,如果没有继续后续的两个规则。

规则二 检查bean属性名称和select table column列名称是否一样,如果一样则进行值设置,否则继续最后一个规则,例如:
bean属性名称为field_name
private String field_name;
select table column名称也为field_name,则自动匹配并设置值。

规则三 检查规范化的bean属性名称和select table column列转换为规范化的java名称是否一样,如果一样则进行值设置,select table column列转换为规范化的java属性名称的规则为:field_name_xxx被转换后的java field name为fieldNameXxx。举例如下:
private String fieldName;
表的字段名称为field_name,则二者自动匹配并设置值。

上面就是bboss持久层所提供的or mapping和原生sql的简单介绍。

如果觉得上述or mapping机制无法完全满足你的要求,那么bboss持久层还提供了更加灵活高效的行处理器机制,行处理器的使用请参考文档: bboss持久层行处理器使用介绍
相关实践学习
SLB负载均衡实践
本场景通过使用阿里云负载均衡 SLB 以及对负载均衡 SLB 后端服务器 ECS 的权重进行修改,快速解决服务器响应速度慢的问题
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
7月前
|
前端开发 Java 关系型数据库
在Spring3 MVC中五步配置集成注解方式Hibernate3
在Spring3 MVC中五步配置集成注解方式Hibernate3
53 3
|
7月前
|
XML Java 数据库
在Spring框架中,事务管理是一个重要的功能
在Spring框架中,事务管理是一个重要的功能
23 0
|
SQL Java 数据库连接
Spring框架数据访问
Spring框架数据访问
77 1
|
XML Java 数据库
Spring框架中如何处理事务管理
Spring框架中如何处理事务管理
174 0
|
设计模式 自动驾驶 小程序
什么是Spring框架?Spring框架有哪些主要模块?
什么是Spring框架?Spring框架有哪些主要模块?
什么是Spring框架?Spring框架有哪些主要模块?
|
Web App开发 Java 数据库连接
|
SQL Java Spring
bboss与spring中配置和引用bboss数据源和bboss dao组件方法说明
首先在项目中导入bboss 持久层包: maven坐标 com.bbossgroups bboss-persistent 5.0.3.5 gradle坐标 compile 'com.
990 0
|
Java 关系型数据库 数据库连接
bboss持久层多数据源配置及多数据库事务控制使用方法
bboss持久层多数据源配置及使用方法,持久层框架及demo下载请参看文档:http://yin-bp.iteye.com/blog/1080824 1.配置多个数据源-poolman.xml 在classes类路径根目录下准备好dbcp.
968 0
|
SQL 缓存 自然语言处理
bboss 持久层重大改进
bboss 持久层重大改进。 bboss持久层最大特色就是其对动态sql语句的良好支持,这个机制是基于velocity模板引擎的来实现的: Velocity.evaluate(context, out, sqlName, sql); Velocity.evaluate这个方法存在一个非常严重的性能隐患,那就是这个方法没有对解析出来的sql模板语法结构树做任何的缓存机制,每次都会硬解析sql语句,并且在解析sql语句时会向velocity的模板解析器池中获取一个池化的解析器,这样在高并发情况下会频繁地获取解析其池的共享锁,导致系统性能下降。
905 0
bboss持久层事务管理组件TransactionManager增加两个release方法
bboss持久层事务管理组件TransactionManager增加release和releasenolog两个方法,可以在finally块中调用它们来释放事务资源,使得bboss持久层框架的编程事务管理变得更加优雅、更加轻松。
732 0