TangYuan使用教程-功能介紹

TangYuan之功能介紹


1. 項目介紹

TangYuan是一個基於Java的持久層框架。提供的持久層框架包括SQL Maps和Data Access Objects(DAO)git

2. 項目特性

  • 數據源相關

支持多數據源,讓讀寫分離,多數據庫的應用變得簡單。支持數據源組,在分庫分表的大數據量應用環境將更加方便。github

  • 事務相關

原生的支持事務的傳播和隔離,無需依託第三方框架,同時支持多數據源的JDBC事務。sql

  • 緩存相關

原生提供多種緩存的的支持,並同時支持多種緩存的混合使用。數據庫

  • 數據映射相關

支持用用戶自定義的配置,同時提供提供基於規則的映射配置。緩存

  • 分庫分表支持

原生的支持基於Hash、Range、Mod、Random模式的分庫分表設置,同時支持用戶自定義的分庫分表策略。架構

  • 數據訪問相關

支持單條的SQL語句訪問,同時並支持複雜的組合SQL語句訪問,讓數據庫的應用開發更爲高效、簡單。app

  • Mongo訪問相關

3. 系統架構

系統架構圖

4. 版本和Maven依賴

<dependency>
	<groupId>org.xson</groupId>
	<artifactId>tangyuan</artifactId>
	<version>1.0.0</version>
</dependency>

5. 代碼片斷

<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>

聯繫交流

相關文章
相關標籤/搜索