您的位置:首页 > 数据库

BeetlSql中的命名转换和联合主键

2019-09-18 19:33 2371 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/gdkyxy2013/article/details/100993715

       本文参考BeetlSql官方网站,官网网站请点击这里~

一、命名转换 

      Beetlsql默认提供了三种列名和属性名的映射类:1、DefaultNameConversion ,数据库名和java属性名保持一致,例如数据库表User,对应Java类也是User,数据库列是name,则java属性也是name,反之亦然。2、UnderlinedNameConversion,将数据库下划线去掉,首字母大写,如数据库是SYS_USER,则会改成SysUser。3、JPA2NameConversion ,支持JPA方式的映射,适合不能确定的映射关系。当然,如果以上三个都不合适,还可以自定义命名转化。一般来讲,建议使用UnderlinedNameConversion。

       在使用org.beetl.sql.core.JPA2NameConversion作为命令转化规则时,可以使用以下JPA标签来帮助解析实体类到数据库的转换:1、javax.persistence.Table;2、javax.persistence.Column;3、javax.persistence.Transient

       规则如下:1、在类名前使用Table注解映射的表名,例如:@Table(name = "XZW"),表示映射的表名是XZW;2、忽略静态变量以及被@Transient注解的属性;3、默认属性名与库表的字段名保持一致,如果不一致时,可以使用@Column注解。例如:

[code]@Table(name = "XZW")
public class TestEntity implements Serializable {
public static String S = "SSS";
private String id;
@Column(name = "login_name")
private String loginName;
private String password;
private Integer age;
private Long ttSize;
private byte[] bigger;
private String biggerClob;
@Transient
private String biggerStr;
@AssignID
public String getId() {
return id;
}
getter setter...
}

二、联合主键

       BeetlSql支持复合主键,无需像其他dao工具那样创建一个特别的主键对象,主键对象就是实体对象本身。例如:

[code]CREATE TABLE `party` (
`id1` int(11) NOT NULL,
`id2` int(11) NOT NULL,
`name` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id1`,`id2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
[code]public class Party  {
@AssignID
private Integer id1 ;
@AssignID
private Integer id2 ;
private String name ;
//忽略其他 getter setter方法
}

      根据主键获取Party:

[code]Party key = new Party();
key.setId1(1);
key.setId2(2);
Party party = sql.unique(Party.class, key);

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: