Ⅰ spring-mybatis 怎麼配置
數據訪問層的控制,applicationContext-.xml的配置:
配置載入數據連接資源文件的配置,把資料庫連接數據抽取到一個properties資源文件中方便管理。
配置為:
<!-- 載入資料庫連接的資源文件 -->
<context:property-placeholder location="/WEB-INF/classes/jdbc.properties"/>
其中jdbc.properties文件的內容如下:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/database
jdbc.username=root
jdbc.password=1234
配置資料庫連接池,這里使用的是dbcp,別忘了添加jar包!
<!-- 配置數據源 dbcp資料庫連接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
Ⅱ SpringBoot整合MyBatisPlus配置動態數據源
MybatisPlus特性
快速開始
初始化測試數據表:
父工程依賴
該工程用於依賴管理,pom如下:
創建MyBaitsPlus工程
依賴如下:
properties配置
在這里配置資料庫連接,以及數據連接池與mybatisplus的配置等
常規增刪改查實現
創建實體類:
該lombok插件省去getset方法。
創建UserMapper介面,並且實現BaseMapper<User>這里我們指定實體類為user可直接使用介面中的方法。
UserMapper.xml,如下:
執行SQL:
在SpringBoot中使用MybatisPlus分頁需要注入Bean,並且在啟動類上使用@MapperScan("com.simple.spring.boot.mapper")掃描mapper文件路徑如下:
使用MyBatisPlus可以為我們減少很多很多的代碼,不過需要編寫實體類,有失必有得。
配置動態數據源
dynamic-datasource-spring-boot-starter 是一個基於springboot的快速集成多數據源的啟動器。
優勢
網上關於動態數據源的切換的文檔有很多,核心只有兩種。
如果你的數據源較少,場景不復雜,選擇以上任意一種都可以。如果你需要更多特性,請嘗試本動態數據源。
劣勢
不能使用多數據源事務(同一個數據源下能使用事務),網上其他方案也都不能提供。
如果你需要使用到分布式事務,那麼你的架構應該到了微服務化的時候了。
如果呼聲強烈,項目達到800 star,作者考慮集成分布式事務。
PS: 如果您只是幾個資料庫但是有強烈的需求分布式事務,建議還是使用傳統方式自己構建多套環境集成atomic這類,網上網路很多。
約定
建議
強烈建議在 主從模式 下遵循普遍的規則,以便他人能更輕易理解你的代碼。
主資料庫 建議 只執行 INSERT UPDATE DELETE 操作。
從資料庫 建議 只執行 SELECT 操作。
快速開始
加入依賴:
注釋掉原來的資料庫配置,加入:
使用 @DS 切換數據源。
@DS 可以註解在方法上和類上, 同時存在方法註解優先於類上註解 。
註解在service實現或mapper介面方法上,但強烈不建議同時在service和mapper註解。 (可能會有問題)
如果不加入主鍵則使用默認數據源。
DruidDataSourceAutoConfigure會注入一個DataSourceWrapper,其會在原生的spring.datasource下找url,username,password等。而我們動態數據源的配置路徑是變化的,所以需要排除:
或者在類上排除:
然後更換properties配置信息:
本篇代碼案例地址:
https://github.com/450255266/open-doubi
作者:SimpleWu
出處:https://www.cnblogs.com/SimpleWu/p/10930388.html
Ⅲ spring整合mybatis查詢資料庫時卡死什麼原因
sql鎖死了吧。看看有沒有鎖sql語句了,再看看關聯欄位是不是採用相同的格式,如果不是,就會出現sql執行越來越慢,最後直接導致查詢堵塞的情況
Ⅳ MyBatis如何連接資料庫
通過配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-4.0.xsd">
<!-- 開啟註解掃描 -->
<context:component-scan base-package="com.ijava.springmvc."/>
<!-- 載入配置文件 --> <!-- placeholder 佔位符 -->
<context:property-placeholder location="classpath:resources/db.properties"/>
<!-- 資料庫連接池 -->
<bean id="datasource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${jdbc.driver}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!-- 創建對象 -->
<bean id="userDao" class="com.ijava.springmvc..UserDaoImpl"></bean>
<bean id="userService" class="com.ijava.springmvc.service.UserServiceImpl"></bean>
<bean class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="datasource"></property>
</bean>
</beans>
Ⅳ Mybatis是什麼以及Mybatis和JDBC的關系
Mybatis是什麼
mybatis是一個持久層ORM框架。它內部封裝了jdbc,使得開發更簡潔,更高效。
MyBatis可以通過xml或註解完成ORM映射關系配置。
Mybatis和JDBC的關系
JDBC是Java提供的一個操作資料庫的API; MyBatis是一個持久層ORM框架,底層是對JDBC的封裝。
MyBatis對JDBC操作資料庫做了一系列的優化:
(1) mybatis使用已有的連接池管理,避免浪費資源,提高程序可靠性。
(2) mybatis提供插件自動生成DAO層代碼,提高編碼效率和准確性。
(3)mybatis 提供了一級和二級緩存,提高了程序性能。
(4) mybatis使用動態SQL語句,提高了SQL維護。(此優勢是基於XML配置)
(5) mybatis對資料庫操作結果進行自動映射
MyBatis的優點和缺點
優點:
簡單:易於學習,易於使用,通過文檔和源代碼,可以比較完全的掌握它的設計思路和實現。
實用:提供了數據映射功能,提供了對底層數據訪問的封裝(例如ado.net),提供了DAO框架,可以使我們更容易的開發和配置我們的DAL層。
靈活:通過sql基本上可以實現我們不使用數據訪問框架可以實現的所有功能,或許更多。
功能完整:提供了連接管理,緩存支持,線程支持,(分布式)事物管理,通過配置作關系對象映射等數據訪問層需要解決的問題。提供了DAO支持,並在DAO框架中封裝了ADO.NET,NHibernate和DataMapper。
增強系統的可維護性:通過提供DAO層,將業務邏輯和數據訪問邏輯分離,使系統的設計更清晰,更易維護,更易單元測試。sql和代碼的分離,提高了可維護性。
缺點:
sql工作量很大,尤其是欄位多、關聯表多時,更是如此。
sql依賴於資料庫,導致資料庫移植性差。
由於xml里標簽id必須唯一,導致DAO中方法不支持方法重載。
欄位映射標簽和對象關系映射標簽僅僅是對映射關系的描述,具體實現仍然依賴於sql。(比如配置了一對多Collection標簽,如果sql里沒有join子表或查詢子表的話,查詢後返回的對象是不具備對象關系的,即Collection的對象為null)。
DAO層過於簡單,對象組裝的工作量較大。
不支持級聯更新、級聯刪除。
編寫動態sql時,不方便調試,尤其邏輯復雜時。
提供的寫動態sql的xml標簽功能簡單(連struts都比不上),編寫動態sql仍然受限,且可讀性低。使用不當,容易導致N+1的sql性能問題。
Ⅵ MyBatis 怎樣使用JNDI連接資料庫
JNDI是J2EE中一個很重要的標准,通常我們是在J2EE編程中用到,Tomcat中提供了在JSP和Servelt中直接使用JNDI的方法,主要是通過dbcp連接池
重點講使用:
1.配置context.xml
注意地址是:tomcat安裝目錄下的conf,該目錄下應該有了context.xml文件。貌似以前的版本是在項目目錄中的META-INF目錄下配置,我剛開始時參考是也是老版本的操作方法,誰知道試了一晚都不行。。。如果不是那裡配置的話會可能出現這樣的錯誤提示:javax.naming.NameNotFoundException: Name jdbc is not bound in this Context?
現在開始配置:
<Context path="/Manager" reloadable="true">
<Resource
name="hello"
type="javax.sql.DataSource"
driverClassName="com.mysql.jdbc.Driver"
username="root"
password="123456"
maxIdle="4"
maxActive="4"