hibernate完成特殊使命(多库查询)

今天开发遇到了链接多个库来进行查询,也就是查询多个库中的表然后从中获取所需数据那么我们的配置应该怎么写才能完成该改需求那请看

下面讲解:

  其实很简单道理和链接一个库去查询道理是一样的只不过配置略有不同

  例子:

  比如说在 jdbc:mysql://192.168.91.211:3306/wanbu?characterEncoding=gbk  改urlmysql服务下有两个库一个wanbu 一个ultrax

  你如果想查询wanbu库中的user表和cltar中的mesage表并且是要两表联查那么sql应该是这样的

  select  u.uname,m.title from wanbu.user u inner join ultrax.mesage m on u.uid=m.uid; 必须要加数据库名称去调用

那么要想在hql中用其实是一样的只不过要在对应表(不在默认库下的表)entity.hbm.xml 中加上catalog="ultrax   表所属的库名

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- 
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="com.dascom.Wanbuadmin.userManage.pojo.message" table="pre_wanbu_walk_mesage" catalog="ultrax">
        <id name="walkdataId" type="java.lang.Integer">
            <column name="walkdataID" />
            <generator class="native" />
        </id>

 这是告诉我们凡是于这张表有关的操作都会到该库下执行,其实到sql那边就是会自动给表加上库名在去调用。如果不写的话默认都会到你链接url时写的库中去找表并且操作,本例中自然会去wanbu这个库中找了,如果写上则就会去对应的库中找表了,脖子疼了,在写写使用该方法应注意且必须做到的事,  1. 要操作的多个库必须位于同一个mysql服务下也就是说必须在同一个url下 2。 url中的用户名和密码必须对这些个库都有操作权限。  如果不满足这两点那就不要用这种方法,可以用配置多个hibernate.cfg.xml 的方式来进行也就是说配置多个链接然后创建多个session 进行操作,麻烦死,希望你们能使用第一种方法。 再说一句就是hibernate多库查询的时候HQL不需要写库名了只写类名我们只需将catalog 配置好就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值