通用JNDI数据源

今天想把测试项目的数据源改成JNDI 的,但是不想每个项目都建立一个数据源,而是多个项目公用一个,测试项目嘛,搞简单点~


这样的话,URL就不能带目录名了,改成这样:

jdbc:mysql://localhost:3306                                                                                                                                       


问题来了,这样的话怎么查具体某一个目录里的表呢?

比如有一个库 hibernate ,我的hibernate的测试库,当运行这个项目时就会出异常了,原因是找不到指定的表


为了解决这个问题,查阅了hibernate的文档,找到如下解决方案

1. 在hibernate.cfg.xml 中可以设置全局默认的目录名:

<property name="default_catalog">hibernate</property>

2. 在 entity.hbm.xml 中可以设置局部目录名:

<hibernate-mapping package="entity" catalog="hibernate">


hibernate 是在table 名前加一个前缀,像下面这样:

insert into hibernate.t_users (name, age, verify, hiredate1, hiredate2, hiredate3) values(?, ?, ?, ?, ?, ?)


如果直接使用JDBC , 在Connection接口有个setCatalog方法,这个可以灵活使用哦~

或者使用表全名,就像上面hibernate做的一样,hibernate也可以修改源码,比如加一个配置参数读入目录名,然后setCatalog,这个大家自己研究吧~


至于mybatis , 由于是自写sql,所以和JDBC一样了,值得一提的是 DriverManager 类有一个这样的方法 getConnection(url, properties)

就是可以传入一个properties对象进去,实际上mybatis 自带的数据源实现就是用这个方法获取的Connection对象,上面说过setCatalog

方法了,所以在properties对象中添加一个catalog属性和值,就可以设置目录了


如有错误和不全面的,还请大家纠正和补充哈~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值