TangYuan是一個基於Java的持久層框架。提供的持久層框架包括SQL Maps和Data Access Objects(DAO)git
- 數據源相關
支持多數據源,讓讀寫分離,多數據庫的應用變得簡單。支持數據源組,在分庫分表的大數據量應用環境將更加方便。github
- 事務相關
原生的支持事務的傳播和隔離,無需依託第三方框架,同時支持多數據源的JDBC事務。sql
- 緩存相關
原生提供多種緩存的的支持,並同時支持多種緩存的混合使用。數據庫
- 數據映射相關
支持用用戶自定義的配置,同時提供提供基於規則的映射配置。緩存
- 分庫分表支持
原生的支持基於Hash、Range、Mod、Random模式的分庫分表設置,同時支持用戶自定義的分庫分表策略。架構
- 數據訪問相關
支持單條的SQL語句訪問,同時並支持複雜的組合SQL語句訪問,讓數據庫的應用開發更爲高效、簡單。app
- Mongo訪問相關
<dependency> <groupId>org.xson</groupId> <artifactId>tangyuan</artifactId> <version>1.0.0</version> </dependency>
<sql-service id="updateProjectP2" dsKey="writetvr" txRef="tx_02"> <if test="{through} == 2"> <update rowCount="{nCount}"> update project set project_state = 25, audit_time = #{audit_time|now()}, update_time = #{update_time|now()} where project_sn = #{project_sn} AND project_ctrl_state = 1 AND project_state = 20 </update> <exception test="{nCount} != 1" code="-1" message="項目審覈失敗"/> <selectOne resultKey="{project}"> select * from project where project_sn = #{project_sn} </selectOne> <if test="{project.reservation_mode} == 2"> <insert> INSERT INTO project_apply ( project_sn, provider_id, provider_name, bidding_amount, create_time, apply_state, reservation_state ) VALUES ( #{project_sn}, #{project.provider_id}, #{project.provider_name}, #{bidding_amount|0}, #{create_time|now()}, 2, 10 ) </insert> </if> </if> <else> <update rowCount="{nCount}"> update project set task_ctrl_state = 2, audit_no_time = #{audit_no_time|now()}, update_time = #{update_time|now()} where project_sn = #{project_sn} AND task_ctrl_state = 1 </update> </else> </sql-service>