日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

03.Mybatis优化

發(fā)布時(shí)間:2024/7/5 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 03.Mybatis优化 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

對(duì)動(dòng)態(tài)代理方式的代碼進(jìn)行進(jìn)一步優(yōu)化:

1.將conf.xml文件中對(duì)數(shù)據(jù)庫(kù)的配置信息以db.properties的形式抽離出來(lái)

driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/person?serverTimezone=UTC username=root password=root <configuration> <properties resource="db.properties" /> //把抽離出去的properties文件加載進(jìn)來(lái)<environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${driver}"/> //用類(lèi)似el表達(dá)式的方式進(jìn)行引用<property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><mappers><mapper resource="com/offcn/mapper/personMapper.xml"/></mappers> </configuration>

2.配置全局參數(shù):(作為入門(mén)一般不對(duì)全局參數(shù)進(jìn)行設(shè)置)

<configuration><properties resource="db.properties" /><!-- 設(shè)置全局參數(shù)<settings><setting name="cacheEnabled" value="false" /><setting name="lazyLoadingEnabled" value="false" /></settings>

所有的全局參數(shù):

設(shè)置參數(shù)描述有效值默認(rèn)值
cacheEnabled該配置影響的所有映射器中配置的緩存的全局開(kāi)關(guān)。true | falsetrue
lazyLoadingEnabled延遲加載的全局開(kāi)關(guān)。當(dāng)開(kāi)啟時(shí),所有關(guān)聯(lián)對(duì)象都會(huì)延遲加載。 特定關(guān)聯(lián)關(guān)系中可通過(guò)設(shè)置fetchType屬性來(lái)覆蓋該項(xiàng)的開(kāi)關(guān)狀態(tài)。true | falsefalse
aggressiveLazyLoading當(dāng)開(kāi)啟時(shí),任何方法的調(diào)用都會(huì)加載該對(duì)象的所有屬性。否則,每個(gè)屬性會(huì)按需加載(參考lazyLoadTriggerMethods).true | falsefalse (true in ≤3.4.1)
multipleResultSetsEnabled是否允許單一語(yǔ)句返回多結(jié)果集(需要兼容驅(qū)動(dòng))。true | falsetrue
useColumnLabel使用列標(biāo)簽代替列名。不同的驅(qū)動(dòng)在這方面會(huì)有不同的表現(xiàn), 具體可參考相關(guān)驅(qū)動(dòng)文檔或通過(guò)測(cè)試這兩種不同的模式來(lái)觀察所用驅(qū)動(dòng)的結(jié)果。true | falsetrue
useGeneratedKeys允許 JDBC 支持自動(dòng)生成主鍵,需要驅(qū)動(dòng)兼容。 如果設(shè)置為 true 則這個(gè)設(shè)置強(qiáng)制使用自動(dòng)生成主鍵,盡管一些驅(qū)動(dòng)不能兼容但仍可正常工作(比如 Derby)。true | falseFalse
autoMappingBehavior指定 MyBatis 應(yīng)如何自動(dòng)映射列到字段或?qū)傩浴?NONE 表示取消自動(dòng)映射;PARTIAL 只會(huì)自動(dòng)映射沒(méi)有定義嵌套結(jié)果集映射的結(jié)果集。 FULL 會(huì)自動(dòng)映射任意復(fù)雜的結(jié)果集(無(wú)論是否嵌套)。NONE, PARTIAL, FULLPARTIAL
autoMappingUnknownColumnBehavior指定發(fā)現(xiàn)自動(dòng)映射目標(biāo)未知列(或者未知屬性類(lèi)型)的行為。
  • NONE: 不做任何反應(yīng)
  • WARNING: 輸出提醒日志 ('org.apache.ibatis.session.AutoMappingUnknownColumnBehavior'的日志等級(jí)必須設(shè)置為?WARN)
  • FAILING: 映射失敗 (拋出?SqlSessionException)
NONE, WARNING, FAILINGNONE
defaultExecutorType配置默認(rèn)的執(zhí)行器。SIMPLE 就是普通的執(zhí)行器;REUSE 執(zhí)行器會(huì)重用預(yù)處理語(yǔ)句(prepared statements); BATCH 執(zhí)行器將重用語(yǔ)句并執(zhí)行批量更新。SIMPLE REUSE BATCHSIMPLE
defaultStatementTimeout設(shè)置超時(shí)時(shí)間,它決定驅(qū)動(dòng)等待數(shù)據(jù)庫(kù)響應(yīng)的秒數(shù)。任意正整數(shù)Not Set (null)
defaultFetchSize為驅(qū)動(dòng)的結(jié)果集獲取數(shù)量(fetchSize)設(shè)置一個(gè)提示值。此參數(shù)只可以在查詢(xún)?cè)O(shè)置中被覆蓋。任意正整數(shù)Not Set (null)
safeRowBoundsEnabled允許在嵌套語(yǔ)句中使用分頁(yè)(RowBounds)。如果允許使用則設(shè)置為false。true | falseFalse
safeResultHandlerEnabled允許在嵌套語(yǔ)句中使用分頁(yè)(ResultHandler)。如果允許使用則設(shè)置為false。true | falseTrue
mapUnderscoreToCamelCase是否開(kāi)啟自動(dòng)駝峰命名規(guī)則(camel case)映射,即從經(jīng)典數(shù)據(jù)庫(kù)列名 A_COLUMN 到經(jīng)典 Java 屬性名 aColumn 的類(lèi)似映射。true | falseFalse
localCacheScopeMyBatis 利用本地緩存機(jī)制(Local Cache)防止循環(huán)引用(circular references)和加速重復(fù)嵌套查詢(xún)。 默認(rèn)值為 SESSION,這種情況下會(huì)緩存一個(gè)會(huì)話(huà)中執(zhí)行的所有查詢(xún)。 若設(shè)置值為 STATEMENT,本地會(huì)話(huà)僅用在語(yǔ)句執(zhí)行上,對(duì)相同 SqlSession 的不同調(diào)用將不會(huì)共享數(shù)據(jù)。SESSION | STATEMENTSESSION
jdbcTypeForNull當(dāng)沒(méi)有為參數(shù)提供特定的 JDBC 類(lèi)型時(shí),為空值指定 JDBC 類(lèi)型。 某些驅(qū)動(dòng)需要指定列的 JDBC 類(lèi)型,多數(shù)情況直接用一般類(lèi)型即可,比如 NULL、VARCHAR 或 OTHER。JdbcType enumeration. Most common are: NULL, VARCHAR and OTHEROTHER
lazyLoadTriggerMethods指定哪個(gè)對(duì)象的方法觸發(fā)一次延遲加載。A method name list separated by commasequals,clone,hashCode,toString
defaultScriptingLanguage指定動(dòng)態(tài) SQL 生成的默認(rèn)語(yǔ)言。A type alias or fully qualified class name.org.apache.ibatis.scripting.xmltags.XMLLanguageDriver
defaultEnumTypeHandlerSpecifies the?TypeHandler?used by default for Enum. (Since: 3.4.5)A type alias or fully qualified class name.org.apache.ibatis.type.EnumTypeHandler
callSettersOnNulls指定當(dāng)結(jié)果集中值為 null 的時(shí)候是否調(diào)用映射對(duì)象的 setter(map 對(duì)象時(shí)為 put)方法,這對(duì)于有 Map.keySet() 依賴(lài)或 null 值初始化的時(shí)候是有用的。注意基本類(lèi)型(int、boolean等)是不能設(shè)置成 null 的。true | falsefalse
returnInstanceForEmptyRow當(dāng)返回行的所有列都是空時(shí),MyBatis默認(rèn)返回null。 當(dāng)開(kāi)啟這個(gè)設(shè)置時(shí),MyBatis會(huì)返回一個(gè)空實(shí)例。 請(qǐng)注意,它也適用于嵌套的結(jié)果集 (i.e. collectioin and association)。(從3.4.2開(kāi)始)true | falsefalse
logPrefix指定 MyBatis 增加到日志名稱(chēng)的前綴。Any StringNot set
logImpl指定 MyBatis 所用日志的具體實(shí)現(xiàn),未指定時(shí)將自動(dòng)查找。SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGINGNot set
proxyFactory指定 Mybatis 創(chuàng)建具有延遲加載能力的對(duì)象所用到的代理工具。CGLIB | JAVASSISTJAVASSIST (MyBatis 3.3 or above)
vfsImpl指定VFS的實(shí)現(xiàn)自定義VFS的實(shí)現(xiàn)的類(lèi)全限定名,以逗號(hào)分隔。Not set
useActualParamName允許使用方法簽名中的名稱(chēng)作為語(yǔ)句參數(shù)名稱(chēng)。 為了使用該特性,你的工程必須采用Java 8編譯,并且加上-parameters選項(xiàng)。(從3.4.1開(kāi)始)true | falsetrue
configurationFactory指定一個(gè)提供Configuration實(shí)例的類(lèi). 這個(gè)被返回的Configuration實(shí)例是用來(lái)加載被反序列化對(duì)象的懶加載屬性值. 這個(gè)類(lèi)必須包含一個(gè)簽名方法static Configuration getConfiguration(). (從 3.2.3 版本開(kāi)始)類(lèi)型別名或者全類(lèi)名.Not set

3.多參數(shù)的幾種處理方式:

接口:

1    Student queryStudentByNameAndAge(String name,int age); 2 Student queryStudentWithHashMap(Map<String, Object> map); 3 Student queryStudentWithParam(@Param("sname") String sname,@Param("age") int age); 4 Student queryStudentWithObject(Student student);

映射文件:

1 <!-- sql片段 --> 2 <sql id="queryStudent"> 3 select sid,sname,sex,age from student 4 </sql> 5 <!-- 多參數(shù) --> 6 <!--1. 通過(guò)下標(biāo)的方式進(jìn)行傳參 --> 7 <select id="queryStudentByNameAndAge" resultType="student"> 8 <include refid="queryStudent" /> where sname = #{0} and age = #{1} 9 </select> 10 <!-- 2.通過(guò)HashMap進(jìn)行傳參 --> 11 <select id="queryStudentWithHashMap" resultType="student"> 12 <include refid="queryStudent" /> where sname = #{sname} and age = #{age} 13 </select> 14 <!-- 3.通過(guò)注解的方式進(jìn)行傳參 ,同時(shí)注解也能對(duì)對(duì)象進(jìn)行注解,取值的時(shí)候用別名點(diǎn)屬性名--> 15 <select id="queryStudentWithParam" resultType="student"> 16 <include refid="queryStudent" /> where sname = #{sname} and age = #{age} 17 </select> 18 19 <!-- 4.通過(guò)對(duì)象的方式進(jìn)行傳參 --> 20 <select id="queryStudentWithObject" parameterType="student" resultType="student"> 21 <include refid="queryStudent" /> where sname = #{sname} and age = #{age} 22 </select>

測(cè)試類(lèi):

1 public static void queryStudentByNameAndAge() throws IOException { 2 //讀取配置文件 3 Reader reader = Resources.getResourceAsReader("conf.xml"); 4 //創(chuàng)建sqlSessionFactory 5 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); 6 //創(chuàng)建session 7 SqlSession session = sessionFactory.openSession(); 8 //定位映射文件 9 studentMapper studentMapper = session.getMapper(studentMapper.class); 10 //定位sql語(yǔ)句并執(zhí)行sql語(yǔ)句 11 Student student = studentMapper.queryStudentByNameAndAge("饅頭",22); 12 System.out.println(student); 13 //提交事務(wù) 14 session.commit(); 15 session.close(); 16 } 17 public static void queryStudentWithHashMap() throws IOException { 18 //讀取配置文件 19 Reader reader = Resources.getResourceAsReader("conf.xml"); 20 //創(chuàng)建sqlSessionFactory 21 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); 22 //創(chuàng)建session 23 SqlSession session = sessionFactory.openSession(); 24 //定位映射文件 25 studentMapper studentMapper = session.getMapper(studentMapper.class); 26 //定位sql語(yǔ)句并執(zhí)行sql語(yǔ)句 27 Map<String, Object> map = new HashMap<String, Object>(); 28 map.put("sname", "饅頭"); 29 map.put("age", 23); 30 Student student = studentMapper.queryStudentWithHashMap(map); 31 System.out.println(student); 32 //提交事務(wù) 33 session.commit(); 34 session.close(); 35 } 36 public static void queryStudentWithParam() throws IOException { 37 //讀取配置文件 38 Reader reader = Resources.getResourceAsReader("conf.xml"); 39 //創(chuàng)建sqlSessionFactory 40 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); 41 //創(chuàng)建session 42 SqlSession session = sessionFactory.openSession(); 43 //定位映射文件 44 studentMapper studentMapper = session.getMapper(studentMapper.class); 45 //定位sql語(yǔ)句并執(zhí)行sql語(yǔ)句 46 Student student = studentMapper.queryStudentWithParam("饅頭",22); 47 System.out.println(student); 48 //提交事務(wù) 49 session.commit(); 50 session.close(); 51 } 52 public static void queryStudentWithObject() throws IOException { 53 //讀取配置文件 54 Reader reader = Resources.getResourceAsReader("conf.xml"); 55 //創(chuàng)建sqlSessionFactory 56 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); 57 //創(chuàng)建session 58 SqlSession session = sessionFactory.openSession(); 59 //定位映射文件 60 studentMapper studentMapper = session.getMapper(studentMapper.class); 61 //定位sql語(yǔ)句并執(zhí)行sql語(yǔ)句 62 Student stu = new Student(); 63 stu.setSname("饅頭"); 64 stu.setAge(22); 65 Student student = studentMapper.queryStudentWithObject(stu); 66 System.out.println(student); 67 //提交事務(wù) 68 session.commit(); 69 session.close(); 70 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/man-tou/p/11335048.html

總結(jié)

以上是生活随笔為你收集整理的03.Mybatis优化的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 国产一线二线三线在线观看 | 日韩色区 | 亚洲春色在线观看 | 亚洲精品乱码久久久久久久 | 国产成人麻豆免费观看 | 欧美国产日韩一区二区三区 | 国产精品夜夜嗨 | 制服下的诱惑暮生 | 欧美黑人疯狂性受xxxxx喷水 | 性欧美视频 | 青青草色视频 | 日韩精品视频一区二区 | 中文一区二区在线 | bangbros性欧美18| 真实新婚偷拍xxxxx | 婷婷五月在线视频 | 牛牛av在线 | 免费高清黄色 | 中文字幕第18页 | 亚洲成人av一区二区三区 | 国产精品久久久久毛片大屁完整版 | 五月天亚洲色图 | 日本免费一区二区视频 | 日本精品在线播放 | 在线观看视频中文字幕 | 裸体美女免费视频网站 | 国产成人精品一区二区在线小狼 | 99精品人妻无码专区在线视频区 | 4438激情网 | 91www在线观看| 亚洲精品久久久狠狠狠爱 | 视频在线免费观看 | 日本aaa级片| 亚洲精品乱码久久 | 久久久久99精品成人片直播 | 看国产黄色片 | 欧美 日韩 国产一区 | 97伦伦午夜电影理伦片 | 色av性av丰满av | 精彩视频一区二区三区 | 国产亚洲精品美女久久久 | 久久久久亚洲av成人人电影 | 九色视频网 | 欧洲美女与动交zozzo | 国产喷白浆一区二区三区 | 亚洲精品一区二区 | 免费小视频在线观看 | 免费午夜人成电影 | 久久动态图 | 国产一级片麻豆 | 男操女视频在线观看 | 久操视频在线观看 | 男生草女生视频 | 少妇久久久久久被弄到高潮 | 国产制服丝袜在线 | 成人在线亚洲 | 在线播放毛片 | 久久久久国产精品午夜一区 | 熟女俱乐部一区二区视频在线 | 久久精品国产亚洲av麻豆色欲 | 国产精久久久久 | 久久无码性爱视频 | 欧美激情一级 | 国产日韩欧美综合 | 久久精品一区二区免费播放 | 日韩av中文字幕在线 | 亚洲啪啪网址 | 91黄色入口 | 欧美另类高清videos的特点 | 成人一区二区三区视频 | 久久久亚洲精品视频 | 色先锋av| 中文不卡视频 | 日韩黄色精品 | 免费看av软件 | 真实乱视频国产免费观看 | 正在播放经典国语对白 | 玖玖zyz | 一道本在线 | 亚洲欧美视频在线 | 久草超碰| youjizzxxx69| 二级毛片在线观看 | 国产操女人 | 91在线欧美 | 2021狠狠干| 爱爱视频在线免费观看 | 久久国产精彩视频 | 欧美脚交 | 国产精品久久久久久av | 国产在线精品视频 | 99亚洲国产精品 | 久久久久亚洲av成人毛片韩 | 国产传媒一区二区三区 | 欧美日韩国产大片 | a级黄色小视频 | 人妻互换免费中文字幕 | 日韩欧美在线观看视频 | 久久在线免费 |