关于hibernate配置文件的formula(公式)属性的运用

 

这个是一个非常好用而且非常实用的属性。

     如果你希望查询一些数据库中没有的此列的数据,如:截取字符串,或链接字符串或者一些求值函数(sum,average,max)等等。你可以不需要像以往在程序里做了,在配置文件里我们可以直接完成这些操作。

 

     我的数据库里有三个字段  uId(主键),uFirst(字段一),uSecond(字段二)

 

     我的POJO

 

 

 


 1 package  domain;
 2
 3 public   class  Users  {
 4     
 5      private   int  uid;
 6     
 7      private  String ufirst;
 8     
 9      private  String usecond;
10     
11      private  String uinfo;
12
13      public  String getUinfo()  {
14          return  uinfo;
15     }

16
17      public   void  setUinfo(String uinfo)  {
18          this .uinfo  =  uinfo;
19     }

20
21      public   int  getUid()  {
22          return  uid;
23     }

24
25      public   void  setUid( int  uid)  {
26          this .uid  =  uid;
27     }

28
29      public  String getUfirst()  {
30          return  ufirst;
31     }

32
33      public   void  setUfirst(String ufirst)  {
34          this .ufirst  =  ufirst;
35     }

36
37      public  String getUsecond()  {
38          return  usecond;
39     }

40
41      public   void  setUsecond(String usecond)  {
42          this .usecond  =  usecond;
43     }

44
45 }

46

 

     比如我配置文件是这样配置的

 


 1 <? xml version="1.0" encoding="utf-8" ?>
 2 <! DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
 4 <!--  
 5     Mapping file autogenerated by MyEclipse Persistence Tools
 6 -->
 7 < hibernate-mapping >
 8      < class  name ="domain.Users"  table ="users"  catalog ="blogs" >
 9          < id  name ="uid"  type ="java.lang.Integer" >
10              < column  name ="uId"   />
11              < generator  class ="native"   />
12          </ id >
13          < property  name ="ufirst"  type ="java.lang.String" >
14              < column  name ="uFirst"   />
15          </ property >
16          < property  name ="usecond"  type ="java.lang.String" >
17              < column  name ="uSecond"   />
18          </ property >
19          < property  generated ="insert"  name ="uinfo"  formula ="(select concat(u.uFirst,u.uSecnod) from users u where u.uId = uid)" />
20      </ class >
21 </ hibernate-mapping >
22

     配置文件中的属性uinfo在数据库里是不存在的,但是我们要用到一些功能比如我要在插入的时候把第一个字段和第二个字段链接起来,那我们就可以在我们的hibernate mapping文件里使用公式以上的公式.

    那我们的操作类里怎么写呢。

 

 


Users  u  =   new  Users();
u.setUfirst(
" sasa4 " );
u.setUsecond(
" 123456 " );
Transaction tran 
=  session.beginTransaction();
session.save(u);
tran.commit();

// 下面将可以取道我们的公式运行完返回值
System.out.println(u.getUinfo());

 

注意: 1     formula="(sqlStr)" 的格式不能变,标点也不能少。

          2     formula公式里的字段都是数据库里的字段名,除了查询条件参数是要和配置文件里的字段匹配。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值