㈠ MyBatis Generator 配置文件詳解 之 table 元素
相關鏈接: MyBatis Generator 配置文件詳解
此篇主要說明 MyBatis Generator 配置文件詳解 中的 table 元素,有關 MyBatis Generator 配置文件詳解 的其他內容請移步: MyBatis Generator 配置文件詳解
table 元素用來配置要通過內省的表。只有配置的才會生成實體類和其他文件。有一個必選屬性(tableName)指定要生成的表名,可以使用sql通配符匹配多個表。例如要生成全部的表,可以按如下配置:
table 元素包含多個可選屬性:
該元素包含多個可用的<property>子元素,可選屬性為:
除了<property>子元素外,<table>還包含以下子元素:
後面的小節對這4個元素進行詳細講解。
這個元素是可選的,最多可以配置一個。
這個元素用來指定自動生成主鍵的屬性(identity欄位或者sequences序列)。如果指定這個元素,MBG在生成insert的SQL映射文件中插入一個<selectKey>元素。 這個元素 非常重要 ,這個元素包含下面兩個必選屬性:
這個元素還包含兩個可選屬性:
該元素是可選的,最多可以配置一個,使用該元素可以在生成列之前,對列進行重命名。這對那些存在同一前綴的欄位想在生成屬性名時去除前綴的表非常有用。 例如假設一個表包含以下的列:
生成的所有屬性名中如果都包含CUST的前綴可能會讓人不爽。這些前綴可以通過如下方式定義重命名規則:
注意,在內部,MBG使用java.util.regex.Matcher.replaceAll方法實現這個功能。 請參閱有關該方法的文檔和在Java中使用正則表達式的例子。
當<columnOverride>匹配一列時,這個元素(<columnRenamingRule>)會被忽略。<columnOverride>優先於重命名的規則。
該元素有一個必選屬性(searchString):定義將被替換的字元串的正則表達式。
該元素有一個可選屬性(replaceString):這是一個用來替換搜索字元串列每一個匹配項的字元串。如果沒有指定,就會使用空字元串。
關於<table>的<property>屬性useActualColumnNames對此的影響可以查看完整文檔。
該元素可選,可以配置多個。該元素將某些屬性默認計算的值更改為指定的值。
該元素有一個必選屬性(column):要重寫的列名。
該元素有多個可選屬性:
配置示例:
該元素可選,可以配置多個。該元素可以用來屏蔽不需要生成的列。
該元素有一個必選屬性(column):要忽略的列名。
該元素還有一個可選屬性(delimitedColumnName):匹配列名的時候是否區分大小寫。如果為true則區分。默認值為false,不區分大小寫。
㈡ Java框架MyBatis工作流程是怎樣的
一、Mybatis介紹
MyBatis是一款一流的支持自定義SQL、存儲過程和高級映射的持久化框架。MyBatis幾乎消除了所有的JDBC代碼,也基本不需要手工去 設置參數和獲取檢索結果。MyBatis能夠使用簡單的XML格式或者註解進行來配置,能夠映射基本數據元素、Map介面和POJOs(普通java對 象)到資料庫中的記錄。
二、MyBatis工作流程
(1)載入配置並初始化
觸發條件:載入配置文件
配置來源於兩個地方,一處是配置文件,一處是Java代碼的註解,將SQL的配置信息載入成為一個個MappedStatement對象(包括了傳入參數映射配置、執行的SQL語句、結果映射配置),存儲在內存中。
(2)接收調用請求
觸發條件:調用Mybatis提供的API
傳入參數:為SQL的ID和傳入參數對象
處理過程:將請求傳遞給下層的請求處理層進行處理。
(3)處理操作請求 觸發條件:API介面層傳遞請求過來
傳入參數:為SQL的ID和傳入參數對象
處理過程:
(A)根據SQL的ID查找對應的MappedStatement對象。
(B)根據傳入參數對象解析MappedStatement對象,得到最終要執行的SQL和執行傳入參數。
(C)獲取資料庫連接,根據得到的最終SQL語句和執行傳入參數到資料庫執行,並得到執行結果。
(D)根據MappedStatement對象中的結果映射配置對得到的執行結果進行轉換處理,並得到最終的處理結果。
(E)釋放連接資源。
(4)返回處理結果將最終的處理結果返回。
orm工具的基本思想
無論是用過的hibernate,mybatis,你都可以法相他們有一個共同點:
從配置文件(通常是XML配置文件中)得到 sessionfactory.
由sessionfactory 產生 session
在session 中完成對數據的增刪改查和事務提交等.
在用完之後關閉session 。
在java 對象和 資料庫之間有做mapping 的配置文件,也通常是xml 文件。
功能架構
㈢ 怎麼把一條sql動態的寫入到mybatis配置文件里,然後重新載入讀取數據
def optionFun(x : Int) = {
println(x)
if (x > 0) Some(x*10) else None
}
//使用
val funs = Function.unlift(optionFun)
val chars = Array(1,2,3)
//collect需要PartialFunction類型參數
val newchars = chars.collect(funs)
println(newchars.mkString(","))
/**輸出為 10,20,30 */
㈣ 怎麼讀取mybatis的配置文件路徑
Mybatis
分多個配置文件方法,考慮一個項目會很多模塊,如果團體開發的話用不同模塊在不同的配置文件可以這樣實現:
標簽裡面只能放SQL映射文件
Mybatis配置文件
XML
code
Spring裡面的配置文件
XML
code
㈤ MyBatis解析
從命名上可以看出,這個是一個 Builder 模式的,用於創建 SqlSessionFactory 的類。SqlSessionFactoryBuilder 根據配置來構造 SqlSessionFactory。其中配置方式有兩種:
mybatis-config.xml 就是我們的配置文件:
Java Config 相比較 XML 文件的方式而言,會有一些限制。比如修改了配置文件需要重新編譯,註解方式沒有 XML 配置項多等。所以,業界大多數情況下是選擇 XML 文件的方式。但到底選擇哪種方式,這個要取決與自己團隊的需要。比如,項目的 SQL 語句不復雜,也不需要一些高級的 SQL 特性,那麼 Java Config 則會更加簡潔一點;反之,則可以選擇 XML 文件的方式。
創建配置文件解析器XMLConfigBuilder
解析mybatis-config.xml里的配置為Configuration對象,Mybatis的全局配置對象。
XMLConfigBuilder#parseConfiguration解析mapper下的xml
XMLMapperBuilder#bindMapperForNamespace,根據xml里的 namespace 反射出 mapper介面 的 class,如果有mapper介面,則把該mapper介面的class添加到Configuration的mapperRegistry里。
如果該介面已經注冊,則拋出已經綁定的異常。
為該介面注冊MapperProxyFactory,但這里只是注冊其創建MapperProxy的工廠,並不是創建MapperProxy。
如果Mapper對應的xml資源未載入,觸發xml的綁定操作,將xml中的sql語句與Mapper建立關系。
addMapper方法,只是為**Mapper創建對應對應的MapperProxyFactory。
根據Mapper介面與SqlSession創建MapperProxy對象。
根據介面類獲取MapperProxyFactory。
調用MapperProxyFactory的newInstance創建MapperProxy對象。
SqlSessionFactory 顧名思義,是用於生產 SqlSession 的工廠。 通過如下的方式來獲取 SqlSession 實例:
SqlSession 包含了執行 SQL 的所有的方法。以下是示例:
當然,下面的方式可以做到類型安全:
MapperProxy是MapperProxyFactory使用SqlSession創建出來的。所以MapperProxy中包含SqlSession。
可以看到MapperProxy調用invoke方法,進而調用MapperMethod的execute(),這些MapperMethod就是和你要執行的命令相關,比如執行select語句,則會通過SqlSession的select()方法,最終調用到Executor的query方法。Executor會再協調另外三個核心組件。
MapperProxy:
MapperMethod:
插件的構建:
談原理首先要知道StatementHandler,ParameterHandler,Result Handler都是代理,他們是Configuration創建,在創建過程中會調用interceptorChain.pluginAll()方法,為四大組件組裝插件(再底層是通過Plugin.wrap(target,XX, new Plugin( interceptor))來來創建的)。
插件鏈是何時構建的:
在執行SqlSession的query或者update方法時,SqlSession會通過Configuration創建Executor代理,在創建過程中就調用interceptor的pluginAll方法組裝插件。然後executor在調用doQuery()方法的時候,也會調用Configuration的newStatementHandler方法創建StatemenHandler(和上面描述的一樣,這個handler就是個代理,也是通過interceptorChain的pluginAll方法構建插件)
插件如何執行:
以statementhandler的prepare方法的插件為例,正如前面所說,statementhandler是一個proxy,執行他的prepare方法,將調用invokeHandler的invoke方法,而invokeHandler就是Plugin.wrap(target, xxx, new Plugin(interceptor))中的第三個參數,所以很自然invokeHanlder的invoke的方法最終就會調用interceptor對象的intercept方法。
Mybatis的插件配置在configuration內部,初始化時,會讀取這些插件,保存於Configuration對象的InterceptorChain中。
org.apache.ibatis.plugin.InterceptorChain.java源碼。
上面的for循環代表了只要是插件,都會以責任鏈的方式逐一執行,所謂插件,其實就類似於攔截器。
插件的編寫
插件必須實現org.apache.ibatis.plugin.Interceptor介面。
-intercept()方法:執行攔截內容的地方,攔截目標對象的目標方法的執行
-plugin()方法:決定是否觸發intercept()方法。 作用:包裝目標對象,包裝就是為目標對象創建一個代理對象
-setProperties()方法:給自定義的攔截器傳遞xml配置的屬性參數。將插件注冊時的property屬性設置進來
下面自定義一個攔截器:
為什麼要寫Annotation註解?註解都是什麼含義?
Mybatis規定插件必須編寫Annotation註解,是必須,而不是可選。@Intercepts註解:裝載一個@Signature列表,一個@Signature其實就是一個需要攔截的方法封裝。那麼,一個攔截器要攔截多個方法,自然就是一個@Signature列表。
type = Executor.class, method = "query", args = { MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class }
解釋:要攔截Executor介面內的query()方法,參數類型為args列表。
Plugin.wrap(target, this)是干什麼的?
使用JDK的動態代理,給target對象創建一個delegate代理對象,以此來實現方法攔截和增強功能,它會回調intercept()方法。
Mybatis可以攔截哪些介面對象?
Mybatis只能攔截ParameterHandler、ResultSetHandler、StatementHandler、Executor共4個介面對象內的方法。
重新審視interceptorChain.pluginAll()方法:該方法在創建上述4個介面對象時調用,其含義為給這些介面對象注冊攔截器功能,注意是注冊,而不是執行攔截。
攔截器執行時機:plugin()方法注冊攔截器後,那麼,在執行上述4個介面對象內的具體方法時,就會自動觸發攔截器的執行,也就是插件的執行。
Invocation
可以通過invocation來獲取攔截的目標方法,以及執行目標方法。
分頁插件原理
由於Mybatis採用的是邏輯分頁,而非物理分頁,那麼,市場上就出現了可以實現物理分頁的Mybatis的分頁插件。 要實現物理分頁,就需要對String sql進行攔截並增強,Mybatis通過BoundSql對象存儲String sql,而BoundSql則由StatementHandler對象獲取。
因此,就需要編寫一個針對StatementHandler的query方法攔截器,然後獲取到sql,對sql進行重寫增強。
㈥ MyBatis-Plus 使用這么方便,底層是如何處理的呢
MyBatis-plus是完全基於MyBatis開發的一個增強工具,是在MyBatis的基礎上做增強的框架,為簡化開發、提高效率而生。
它在MyBatis原本的框架上增加了很多實用性功能,比如樂觀鎖插件、欄位自動填充功能、分頁插件、條件構造器、sql 注入器等等。使用 MyBatis-plus 可以完全不寫任何 XML 文件,直接使用繼承了BaseMapper 介面的類對象完成對資料庫的映射操作
基於映射的原理,MyBatis-plus 必然要實現 Mapper中的方法與 SQL 語句的對應轉化,以下即為 MyBatis-plus 重要流程圖例
1.在 MyBatis-plus 中, MybatisPlusAutoConfiguration 自動配置類的 sqlSessionFactory() 方法為 Spring提供創建 sqlSession 的工廠類對象,對 sqlSessionFactory 進行定義的定義類變為了 MybatisSqlSessionFactoryBean 。
在 sqlSessionFactory() 方法中,除了注入 MyBatis本身的組件,還會注入MyBatis-plus 的 主鍵生成器、SQL 注入器等組件,最後通過 MybatisSqlSessionFactoryBean#getObject() 方法獲取到 sqlSessionFactory 對象
2. MybatisSqlSessionFactoryBean#getObject() 執行懶載入策略,最後通過 buildSqlSessionFactory() 方法創建 SqlSessionFactory 工廠類對象。這個方法的流程很長,不過大致可以分為兩個步驟:
3. MybatisXMLConfigBuilder#parse() 會去解析配置文件,最後會調用到其內部方法 mapperElement() 。這個方法完成解析 Mapper工作,並將其添加到配置類 MybatisConfiguration 中
4. MybatisConfiguration#addMapper() 方法其實是去調用 MybatisMapperRegistry#addMapper() 方法,其核心是 #parse()
5. #parse() 方法真正開始完成 Mapper 介面中的方法與 SQL 語句的映射,其中 parseStatement() 方法是解析 @Select/@Update 等註解寫入的 SQL語句,而代碼 GlobalConfigUtils.getSqlInjector(configuration).inspectInject(assistant, type ) 通過 MaBatis-plus的 SQL 注入器完成 Mapper 方法與 SQL 語句的轉化
6. AbstractSqlInjector#inspectInject() 會完成 BaseMapper 介面中提供的通用方法對應的 SQL 語句准備,這部分主要通過 AbstractMethod#inject() 方法完成
7. AbstractMethod#inject() 方法並沒有什麼特別的操作,只是調用其子類實現 injectMappedStatement() 方法。以 SelectOne#injectMappedStatement() 為例,其 SQL 語句的核心在於 SqlMethod 類,這個枚舉類中緩存了可以動態拼接的 SQL 語句腳本,只需要填上參數 format 就可以得到 SQL 語句的執行腳本。
以上過程結束,只需要將所有信息通過 addInsertMappedStatement() 方法封裝成 MappedStatement 對象並將其加入到容器中,這樣 Mapper介面方法調用時,就可以通過 動態代理 的方式找到其對應執行的 SQL 腳本,至此 SQL 語句准備及配置解析就完成了。
最後拼接的 SQL 語句 腳本形式如下示例,實際執行資料庫操作時會解析這個腳本完成變數替換,從而得到可執行的 SQL 語句
8. SqlSessionFactory 對象的創建需要回到 MybatisSqlSessionFactoryBean#buildSqlSessionFactory() 方法中,很容易追蹤到 #build() 方法,最後其實是通過 SqlSessionFactoryBuilder#build() 方法創建了一個 DefaultSqlSessionFactory 對象返回
1. @MapperScan 註解通過 @Import(MapperScannerRegistrar.class) 引入掃描注冊的類 MapperScannerRegistrar ,該類實現了 ImportBeanDefinitionRegistrar 介面並重寫 registerBeanDefinitions() 方法,在該方法中注冊了 MapperScannerConfigurer 類
2. MapperScannerConfigurer 是 Mapper介面的掃描配置類,實現了 介面,其 () 方法會在容器啟動過程中被回調,通過 ClassPathMapperScanner#scan() 方法完成 Mapper 的掃描注冊
3. ClassPathMapperScanner#processBeanDefinitions() 將掃描到的 Mapper介面生成的對應 BeanDefinition 的 beanClass 屬性替換為 MapperFactoryBean ,這樣每次獲取 Mapper 實例實際是通過 MapperFactoryBean 的實例去獲取
此處體現了 FactoryBean 的定位,即用於獲取同一類 bean 的工廠 bean。
4. @Autowired 自動注入 Mapper 觸發容器獲取 bean 的方法,調用到 MapperFactoryBean#getObject() 方法,最終調用到 sqlSessionTemplate#getMapper() 方法
5.MyBatis-plus 使用的配置類是 MybatisConfiguration ,最終調用到 MybatisMapperRegistry#getMapper() 方法,這里就進入了動態代理獲取 MapperProxy 實例的流程
6. MybatisMapperProxyFactory#newInstance() 方法給自動注入返回一個 MybatisMapperProxy 代理對象
7.調用 Mapper 介面的方法觸發代理對象的 MybatisMapperProxy#invoke() ,此時根據 Mapper 對象被調用的方法生成 MybatisMapperMethod 對象,通過 MybatisMapperMethod#execute() 去真正地執行 SQL 語句,從而完成資料庫操作。
㈦ mybatis怎麼配置文件,急!
實例說明,一個基本配置文件:
<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
<property name="ignoreResourceNotFound" value="true" />
<!--後期${jdbc.driverClassName} 使用-->
<property name="locations">
<list>
<value>classpath*:*config.properties</value>
<value>classpath*:*db.properties</value>
<value>classpath*:*job.properties</value>
<value>classpath*:*business.properties</value>
</list>
</property>
</bean>
<bean id="taskExecutor"
class="org.springframework.scheling.concurrent.ThreadPoolTaskExecutor">
<!-- 核心線程數 -->
<property name="corePoolSize" value="20" />
<!-- 最大線程數 -->
<property name="maxPoolSize" value="500" />
<!-- 隊列最大長度 -->
<property name="queueCapacity" value="1000" />
<!-- 線程池維護線程所允許的空閑時間,默認為60s -->
<property name="keepAliveSeconds" value="100" />
<property name="threadNamePrefix" value="Express_Info_Thread-"/>
<property name="daemon" value="true"/>
<property name="rejectedExecutionHandler">
<bean class="java.util.concurrent.ThreadPoolExecutor.CallerRunsPolicy"/>
</property>
</bean>
<!-- 註解式 -->
<!--<task:annotation-driven /> -->
<context:annotation-config />
<!-- use-default-filters默認為true,spring可以自動去掃描base-pack下面或者子包下面的java文件.如果掃描到有@Component @Controller@Service等這些註解的類,則把這些類注冊為bean -->
<!--首先通過exclude-filter 進行黑名單過濾;然後通過include-filter 進行白名單過濾;Spring配置文件不初始化Controller-->
<context:component-scan base-package="com.xxx.xxx" user-default-filters = false>
<!--指定Spring中不載入controller,將controller由DispatcherServlet載入-->
<context:exclude-filter type="annotation"
expression="org.springframework.stereotype.Controller" />
</context:component-scan>
<aop:aspectj-autoproxy />
㈧ mybatis如何讀取clob數據 詳細過程
1、MyBatis介紹
MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,並且改名為MyBatis 。2013年11月遷移到Github。
iBATIS一詞來源於「internet」和「abatis」的組合,是一個基於Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO)
2、CLOB
SQL CLOB 是內置類型,它將字元大對象 (Character Large Object) 存儲為資料庫表某一行中的一個列值。默認情況下,驅動程序使用 SQL locator(CLOB) 實現 Clob 對象,這意味著 CLOB 對象包含一個指向 SQL CLOB 數據的邏輯指針而不是數據本身。Clob 對象在它被創建的事務處理期間有效。
3、MyBatis對CLOB類型數據實現增刪改查
oracle表結構
createtableT_USERS
(
IDNUMBERnotnull,
NAMEVARCHAR2(30),
SEXVARCHAR2(3),
BIRSDATE,
MESSAGECLOB
)
createsequenceSEQ_T_USERS_ID
minvalue1
maxvalue99999999
startwith1
incrementby1
cache20;
配置mybatis配置文件UsersMapper.xml
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEmapper
PUBLIC"-//mybatis.org//DTDMapper3.0//EN">
<mappernamespace="examples.mapper.UsersMapper">
<!--ResultMap-->
<resultMaptype="examples.bean.Users"id="BaseResultMap">
<resultproperty="id"column="id"/>
<resultproperty="name"column="name"/>
<resultproperty="sex"column="sex"/>
<resultproperty="birs"column="birs"jdbcType="TIMESTAMP"/>
<resultproperty="message"column="message"jdbcType="CLOB"
javaType="java.lang.String"typeHandler="examples.service.OracleClobTypeHandler"/>
</resultMap>
<sqlid="Tabel_Name">
t_users
</sql>
<!--表中所有列-->
<sqlid="Base_Column_List">
id,name,sex,birs,message
</sql>
<!--查詢條件-->
<sqlid="Example_Where_Clause">
where1=1
<trimsuffixOverrides=",">
<iftest="id!=null">
andid=#{id}
</if>
<iftest="name!=nullandname!=''">
andnamelikeconcat(concat('%','${name}'),'%')
</if>
<iftest="sex!=nullandsex!=''">
andsexlikeconcat(concat('%','${sex}'),'%')
</if>
<iftest="birs!=null">
andbirs=#{birs}
</if>
<iftest="message!=null">
andmessage=#{message}
</if>
</trim>
</sql>
<!--2.查詢列表-->
<selectid="queryByList"resultMap="BaseResultMap"parameterType="Object">
select
<includerefid="Base_Column_List"/>
fromt_users
<includerefid="Example_Where_Clause"/>
</select>
</mapper>
Mapper類介面
packageexamples.mapper;
importjava.util.List;
publicinterfaceUsersMapper<T>{
publicList<T>queryBySelective(Tt);
publicList<T>queryByList(Tt);
}
類型轉換工具類
packageexamples.service;
importjava.sql.CallableStatement;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importoracle.sql.CLOB;
importorg.apache.ibatis.type.JdbcType;
importorg.apache.ibatis.type.TypeHandler;
<Object>{
publicObjectvalueOf(Stringparam){
returnnull;
}
@Override
publicObjectgetResult(ResultSetarg0,Stringarg1)throwsSQLException{
CLOBclob=(CLOB)arg0.getClob(arg1);
return(clob==null||clob.length()==0)?null:clob.getSubString((long)1,(int)clob.length());
}
@Override
publicObjectgetResult(ResultSetarg0,intarg1)throwsSQLException{
returnnull;
}
@Override
publicObjectgetResult(CallableStatementarg0,intarg1)throwsSQLException{
returnnull;
}
@Override
publicvoidsetParameter(PreparedStatementarg0,intarg1,Objectarg2,JdbcTypearg3)throwsSQLException{
CLOBclob=CLOB.empty_lob();
clob.setString(1,(String)arg2);
arg0.setClob(arg1,clob);
}
}
Spring配置文件
<?xmlversion="1.0"encoding="UTF-8"?>
<beansxmlns="
xmlns:xsi="
xmlns:mvc="
xmlns:tx="
xsi:schemaLocation="
default-autowire="byType">
<!--配置數據源-->
<beanid="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<propertyname="driverClassName"><value>oracle.jdbc.driver.OracleDriver</value></property>
<propertyname="url"><value>jdbc:oracle:thin:@127.0.0.1:1521:pms</value></property>
<propertyname="username"><value>pms</value></property>
<propertyname="password"><value>pms</value></property>
</bean>
<!--配完數據源和擁有的sql映射文件sqlSessionFactory也可以訪問資料庫和擁有sql操作能力了-->
<!--
<beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">
<propertyname="dataSource"ref="dataSource"/>
<propertyname="configLocation"value="classpath:mybatis-config.xml"/>
</bean>
-->
<beanid="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">
<propertyname="dataSource"ref="dataSource"/>
<propertyname="mapperLocations">
<list>
<value>classpath:examples/mybatis/oracle/UsersMapper.xml</value>
</list>
</property>
</bean>
<!--通過設置mapperInterface屬性,使介面服務bean和對應xml文件管理可以使用其中的sql-->
<beanid=""class="org.mybatis.spring.mapper.MapperFactoryBean">
<!--此處等同於Mybatis中ServerDaoserverDao=sqlSession.getMapper(ServerDao.class);指明映射關系-->
<propertyname="mapperInterface"value="examples.mapper.UsersMapper"/>
<propertyname="sqlSessionFactory"ref="sqlSessionFactory"/>
</bean>
</beans>
測試類
packageexamples.service;
importjava.text.ParseException;
importjava.text.SimpleDateFormat;
importjava.util.List;
importorg.springframework.context.ApplicationContext;
importorg.springframework.context.support.;
importexamples.bean.Users;
importexamples.mapper.UsersMapper;
publicclassTestUsersService{
@SuppressWarnings("unchecked")
publicstaticvoidmain(String[]args)throwsParseException{
ApplicationContextac=
new("classpath:/examples/service/spring.xml");
UsersMapper<Users>=(UsersMapper<Users>)ac.getBean("");
//查詢
UsersnullBean=newUsers();
List<Users>list=.queryByList(nullBean);
if(list!=null){
for(Usersuser:list){
System.out.println(user);
}
}
}
}
㈨ 怎麼讀取mybatis的配置文件路徑
Mybatis 分多個配置文件方法,考慮一個項目會很多模塊,如果團體開發的話用不同模塊在不同的配置文件可以這樣實現: 標簽裡面只能放SQL映射文件 Mybatis配置文件 XML code Spring裡面的配置文件 XML code
㈩ springmvc怎麼讀取配置文件
1、在spring-mybatis配置文件中引入配置文件,代碼如下:
[html] view plain
<span style="font-family:Comic Sans MS;"> <!-- 引入配置文件 -->
<bean id="prpertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:jdbc.properties</value>
</list>
</property>
</bean></span>
2、為了讓controller讀取到配置文件,仍需要在spring.xml文件中引入配置文件
[html] view plain
<span style="font-family:Comic Sans MS;"><context:property-placeholder location="classpath:jdbc.properties" /></span>