mybatis jdbctype数据类型_mybaits-mybatis配置
一 前言
這篇文章涵蓋了大量的mybatis配置,讀懂一篇,收益終身。
二 properties配置
之前發(fā)布的文章中配置數(shù)據(jù)庫連接信息是直接寫入到mybatis-config.xml;為了使用靈活方便,和動態(tài)修改配置,我們將配置內(nèi)容提取到配置文件db.properties(放在resource目錄下,也可自定義)中,然后在 配置文件中的<properties> 標簽引入 db.properties 所在的位置,然后就可以在 配置文件中使用 ${key} 獲得 db.properties 中對應 key 的 value; 為此以后修改配置文件僅修改外面的 db.properties 中內(nèi)容即可;
2.1 mybatis-config.xml
配置文件修改內(nèi)容如下, MyBatis 3.4.2 之后還支持 默認屬性例如:${username:root} ,當配置文件中未定義該屬性時會讀取默認屬性root,更多詳細的屬性配置看官網(wǎng);
<!-- 引入resource目錄下的配置文件 --><properties resource="db.properties"><property name="username" value="root"/><property name="password" value="123456"/></properties><!-- 全局環(huán)境配置--><environments default="development"><environment id="development"><!-- 事物 --><transactionManager type="JDBC"/><!-- 配置數(shù)據(jù)源 --><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><!-- 配置默認值--><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments>2.2 db.properties
屬性文件內(nèi)如如下;
driver = com.mysql.jdbc.Driver username = root url = jdbc:mysql://192.168.0.100:3306/mybatis password = 123456三 typeAliases配置
typeAliases也就是別名的意思,我們之前查詢的結(jié)果有個 resultType 屬性,每次返回時都要使用類的全限定名(例如:com.zszxz.config.entity.Student),這種配置方式比較繁瑣,mybatis 可以通過配置別名的方式使用簡單類名代替類的全限定名;
3.1 配置方式一
第一種配置比較繁瑣,也就是你有多少個返回類型的實體類,就在 mybatis-config.xml 的屬性 <typeAliases>中配置多少個類名的映射;
mybatis-config.xml代碼片段如下,需注意的標簽的放置位置;
<typeAliases><typeAlias type="com.zszxz.config.entity.Student" alias="student"></typeAlias></typeAliases>mapper.xml 配置如下:
<!-- 查詢學生--><select id="getStudent" resultType="student">select * from student</select>3.2 配置方式二
第二種配置方式就是使用包名配置,mybaits就會進行自動映射,我們在mapper.xml中就可以使用類的簡單名稱表示全類名,這種方式比較簡潔,推薦使用;
mybatis-config.xml代碼片段如下
<typeAliases><package name="com.zszxz.config.entity"/></typeAliases>mapper.xml 配置如下:
<!-- 查詢學生--><select id="getStudent" resultType="student">select * from student</select>3.3 配置方式三
第三種配置方式是使用注解配置,這種配置方式基于第二種的配置方式上,能夠修改默認別名(默認是使用類的簡單類名);在返回類型的實體上使用注解 @Alias可以指定別名;
實體如下:
/*** @Author lsc* @Description <p> </p>* @Date 2019/12/1 20:07*/ @Alias("stu") public class Student {// idprivate String id;// 學生姓名private String name;// 學生編號private String number;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getNumber() {return number;}public void setNumber(String number) {this.number = number;} }mapper.xml如下:
<!-- 查詢學生--><select id="getStudent" resultType="stu">select * from student</select>3.4 mybatis內(nèi)置別名
mybatis 內(nèi)置了多別名類型,即有些數(shù)據(jù)類型不需要配置別名也可以使用類的簡單名稱,比如java的8中基本數(shù)據(jù)類型和對應的包裝類型,集合,迭代器,String類,大數(shù)值,日期等;
四 setting 配置說明
https://blog.csdn.net/youku1327/article/details/103604724 抱歉了,太長了可以看我得博客。
官方完整示例如下,實際開發(fā)中并非如此配置,按需配置;
<settings><setting name="cacheEnabled" value="true"/><setting name="lazyLoadingEnabled" value="true"/><setting name="multipleResultSetsEnabled" value="true"/><setting name="useColumnLabel" value="true"/><setting name="useGeneratedKeys" value="false"/><setting name="autoMappingBehavior" value="PARTIAL"/><setting name="autoMappingUnknownColumnBehavior" value="WARNING"/><setting name="defaultExecutorType" value="SIMPLE"/><setting name="defaultStatementTimeout" value="25"/><setting name="defaultFetchSize" value="100"/><setting name="safeRowBoundsEnabled" value="false"/><setting name="mapUnderscoreToCamelCase" value="false"/><setting name="localCacheScope" value="SESSION"/><setting name="jdbcTypeForNull" value="OTHER"/><setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/> </settings>五 typeHandlers 類型處理器
類型處理器故名思意,也就是可以在java類型和數(shù)據(jù)庫jdbc類型之間轉(zhuǎn)換;如果要自定義類型處理器就需要編寫類型處理器類,然后在配置文件中配置,在SQL映射文件mapper.xml中使用。
5.1 自定義TypeHandle
本次示例就以字符串類型演示,需要繼承BaseTypeHandler類,重寫里面的方法,具體的代碼清單如下,使用注解 @MappedJdbcTypes 會覆蓋 泛型的String類型;
/*** @Author lsc* <p> 知識追尋者,字符串類型處理器</p>*/ // 指定關(guān)聯(lián)jdbc會改變泛型指定 //@MappedJdbcTypes(JdbcType.VARCHAR) public class StringTypeHandler extends BaseTypeHandler<String> {public void setNonNullParameter(PreparedStatement preparedStatement, int i, String s, JdbcType jdbcType) throws SQLException {// 指定java參數(shù)類型(String)對應數(shù)據(jù)庫類型(varchar)preparedStatement.setString(i,s);}public String getNullableResult(ResultSet resultSet, String s) throws SQLException {return resultSet.getString(s);}public String getNullableResult(ResultSet resultSet, int i) throws SQLException {return resultSet.getString(i);}public String getNullableResult(CallableStatement callableStatement, int i) throws SQLException {return callableStatement.getString(i);} }5.2 mybatis-config.xml
在 mybaits的配置文件中配置自定義的類型處理器
<!--配置類型處理器,會覆蓋默認的類型處理器 --><typeHandlers><typeHandler handler="com.zszxz.config.handler.StringTypeHandler"></typeHandler></typeHandlers>也可以使用包名全局掃描,減輕配置過程;
<!--配置類型處理器,會覆蓋默認的類型處理器 --><typeHandlers><package name="com.zszxz.config.handler"/></typeHandlers>如果配置了jdbc的映射屬性會覆蓋泛型指定類型
<typeHandlers><!--指定關(guān)聯(lián)jdbc會改變泛型指定 --><typeHandler handler="com.zszxz.config.handler.StringTypeHandler" javaType="java.lang.String" jdbcType="VARCHAR"></typeHandler></typeHandlers>5.3 SQL映射文件
使用 jdbcType=VARCHAR,javaType=String 指定類型轉(zhuǎn)換;
<insert id="addStudent" parameterType="stu">insert into student(`name`,`number`)values (#{name,jdbcType=VARCHAR,javaType=String},#{number})</insert>六 mappers映射器
mappers映射器就是配置引入SQL映射文件,也很簡單,這邊就給出官方示例,不再具體試驗,有四種方式,通常我們掌握一至兩種就足夠日常開發(fā)使用;
6.1 相對于類路徑方式
<mappers><mapper resource="org/mybatis/builder/AuthorMapper.xml"/><mapper resource="org/mybatis/builder/BlogMapper.xml"/><mapper resource="org/mybatis/builder/PostMapper.xml"/> </mappers>6.2 資源絕對路徑方式
<mappers><mapper url="file:///var/mappers/AuthorMapper.xml"/><mapper url="file:///var/mappers/BlogMapper.xml"/><mapper url="file:///var/mappers/PostMapper.xml"/> </mappers>6.3 接口實現(xiàn)類的完全限定類名方式
<mappers><mapper class="org.mybatis.builder.AuthorMapper"/><mapper class="org.mybatis.builder.BlogMapper"/><mapper class="org.mybatis.builder.PostMapper"/> </mappers>6.4 接口實現(xiàn)類的包名方式
<mappers><package name="org.mybatis.builder"/> </mappers>總結(jié)
以上是生活随笔為你收集整理的mybatis jdbctype数据类型_mybaits-mybatis配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python源码编译 带tkinter_
- 下一篇: c++ 获取线程id_高效获取当前线程的