跟MyBatis直接连接数据库
专注于为中小企业提供成都做网站、成都网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业弥渡免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了千余家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。
SqlSessionFactory式
MyBatis直接连接候通SqlSessionFactoryBuilder读取MyBatis配置文件
Spring整合MyBatis候通Spring配置文件片段
配置源事务处理式指定由Spring配置文件完
MyBatis配置文件用处比typeAliasSetting等设置要通完
没指定MyBatisSql映射器配置文件我指定MyBatis配置文件MyBatis配置文件指定Sql映射器配置文件
没配置MyBatis配置文件且Sql映射器配置文件与相应接口同名且同路径配置该选项
配置需要sqlSessionFactory进行配置例:
需要注册映射接口
两种式我用扫描:
种式
整合完原使用MyBatis配置文件Sql映射文件都用改变
-
跟MyBatis直接连接数据库不一样的地方,
在SqlSessionFactory的生成方式上,
MyBatis直接连接的时候,是通过SqlSessionFactoryBuilder读取MyBatis配置文件生成。
Spring整合MyBatis的时候,是通过Spring配置文件片段生成的。
bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"
property name="dataSource" ref="myDataSource"/
property name="configLocation" value="bin/resource/mybatis-config.xml"/
/bean
配置源和事务处理方式的指定也由Spring配置文件完成了。
当然MyBatis配置文件还是有用处的,比如typeAlias和Setting等的设置还是要通过它来完成的。
这里没有指定MyBatis的Sql映射器配置文件,因为我这里指定了MyBatis配置文件,在MyBatis配置文件当中,指定了Sql映射器配置文件。
如果没有配置MyBatis配置文件的话,且Sql映射器配置文件与相应的接口同名,且在同一路径下,那么可以不配置该选项。
如果配置的话,需要在sqlSessionFactory里进行配置,例:
property name="mapperLocations" value="src/UserMapper.xml"/
还需要注册映射接口的。
有两种方式,我用的是扫描法,如下:
bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"
property name="basePackage" value="Mapper"/
/bean
还有一种方式是
bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"
property name="mapperInterface" value="com.deppon.pda.v2.mapper.User.UserMapper"/
property name="sqlSessionFactory" ref="sqlSessionFactory"/
/bean
这样就整合完成了,原来使用的MyBatis配置文件和Sql映射文件都可以不用改变。
1. PostgreSQL允许划分两种不同的方式.a个是由范围,而另一个是由列表。表继承做分区。
通过分区范围,通常一个日期范围,是但通过分区列表可以的,如果是这样的分区变量是静态的,没有歪斜。
分区是通过表继承这样做的优先件事就是建立新的子表。
CREATE TABLE measurement (
x int not null,
y date not null,
z int
);
CREATE TABLE measurement_y2006 (
CHECK ( logdate = DATE '2006-01-01' AND logdate DATE '2007-01-01' )
) INHERITS (measurement);
CREATE TABLE measurement_y2007 (
CHECK ( logdate = DATE '2007-01-01' AND logdate DATE '2008-01-01' )
) INHERITS (measurement);
那么无论是规则或触发器需要删除该数据在正确的表格。
规则是更快的批量更新,单触发更新 CodeGo.net,以及更易于维护。下面是一个示例触发。
CREATE TRIGGER insert_measurement_trigger
BEFORE INSERT ON measurement
FOR EACH ROW EXECUTE PROCEDURE measurement_insert_trigger();
和触发函数来进行插入
CREATE OR REPLACE FUNCTION measurement_insert_trigger()
RETURNS TRIGGER AS $$
BEGIN
IF ( NEW.logdate = DATE '2006-01-01'
AND NEW.logdate DATE '2007-01-01' ) THEN
INSERT INTO measurement_y2006 VALUES (NEW.*);
ELSIF ( NEW.logdate = DATE '2007-01-01'
AND NEW.logdate DATE '2008-01-01' ) THEN
INSERT INTO measurement_y2006m03 VALUES (NEW.*);
ELSE
RAISE EXCEPTION 'Date out of range.';
END IF;
RETURN NULL;
END;
$$
LANGUAGE plpgsql;
这些例子是简化了的PostgreSQL版本,以便于阅读。
我不熟悉pgpool2,但gridsql是专为EnterpriseDB公司,这是建立在PostgreSQL的顶部数据库的产品。他们的产品是非常好的,但我不认为它会工作在标准postgresl。
2.
那么,如果问题是关于分片,那么的pgpool和PostgreSQL的分区函数是无效的答案。
分区的分区是在服务器上。
分片是更通用,使用时数据库被分割在几个服务器上。分片分区的时候是不可能的更多,比如对于不适合在单个磁盘上的大型数据库。
对于真正的分片那么Skype的PL /代理可能是最好的。
3.
PL /代理(通过Skype等)是一个很好的解决方案。它需要你的访问是通过一个函数的API,但一旦你有,它可以让它非常透明。