添加依賴項
1. 添加 mybatis 庫,打開 pom.xml 添加 mybatis dependency 依賴;
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.1.1</version> </dependency>
這里用的是 3.1.1 版本;
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.1.1</version> </dependency>
這兩個與 org.springframework.jdbc.datasource.DriverManagerDataSource 有關;
2. 添加 mysql 依賴庫
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.26</version> </dependency>
3. 添加 oracle 依賴,直接添加到 pom.xml 會有問題:
解決辦法,要這樣操作:
首先要下載 ojdbc14.jar 百度下載, 下載到某個目錄
再打開 cmd 命令行窗口, 轉到 ojdbc14.jar 所在目錄, 運行:
>mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc14 -Dversion=10.2.0.2.0 -Dpackaging=jar -Dfile=ojdbc14.jar
回車即可
數據源配置
1. 項目目錄結構
2. 數據源配置文件 META-INF/mybatis/mysql.properties;
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/springdb
username=root
password=root123
注意:com.mysql.jdbc.Driver 大小寫要注意有區別,username以及password后的用戶名、密碼不能帶空格;
3. 我在 WEB-INF/spring/root-context.xml 這個全局的配置文件內配置數據源;
<!-- Root Context: defines shared resources visible to all other web components --> <context:property-placeholder location="classpath:META-INF/mybatis/mysql.properties" /> <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${driver}"></property> <property name="url" value="${url}"></property> <property name="username" value="${username}"></property> <property name="password" value="${password}"></property> </bean> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"></property> <property name="mapperLocations" value="classpath:springlibs/mapper/*Mapper.xml"></property> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="springlibs.dao"></property> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean>
SqlSessionFactoryBean 的 mapperLocations 如果Mapper.xml 分置不同位置,也可以這樣寫:
<property name="mapperLocations"> <list> <!-- 表示在springlibs.mapper包或以下所有目錄中,以-Mapper.xml結尾所有文件 --> <value>classpath:springlibs/mapper/*Mapper.xml</value> </list> </property>
兩種Mapper對應 Bean 的配置方式,這是一個 Mapper 對應一個 Bean 的情況:
<bean id="mapperNameId" class="org.mybatis.spring.mapper.MapperFactoryBean"> <property name="mapperInterface" value="springlibs.mapper.MapperNameMapper" /> <property name="SqlSessionFactory" ref="sqlSessionFactory" /> </bean> <!-- ... -->
如果Mapper很多的話, 那一個個配置很麻煩,就可以像下面這樣的配置方式:
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="springlibs.dao"></property> <property name="markerInterface" value="springlibs.dao.SqlMapper"></property> </bean>
這是通過掃描的模式,掃描目錄在springlibs/dao目錄下,所有的mapper都繼承SqlMapper接口的接口, 這樣一個bean就可以了;
SqlMapper.java 文件:
package springlibs.dao; public interface SqlMapper { }