KNOWEDGE+SOLUTION
MyBatis的结构和配置
//www.toadstooLcomics.com
 

概述
mybatis将用户从jdbc的拜访中解放出来,用户只需求界说需求操作的sql句子,无须重视底层的jdbc操作,就能够面向目标的办法进行耐久层操作。底层数据库衔接的获取、数据拜访的完成、业务操控等都无须用户关怀,从而将运用层从底层的jdbc api中抽取出来,经过装备文件办理jdbc的衔接,运用mybatis处理耐久化拜访的完成。
mybatis的体系结构
mybatis中常用的目标有sqlsessionfactory和sqlsession。
sqlsessionfactory
sqlsessionfactory是mybatis的要害目标,是单个数据库映射联系经过编译后的内存镜像。该目标的实例经过sqlsessionfactorybuilder目标来取得,而sqlsessionfactorybuilder则能够从xml装备文件或一个预先定制的configuration的实例构建出sqlsessionfactory的实例。每一个mybatis的运用程序都以一个sqlsessionfactory目标的实例为中心。
它是线程安全的,sqlsessionfactory一旦被创立,应该在运用履行期间都存在。在运用运转期间不要重复创立,主张运用单例形式。sqlsessionfactory是sqlsession的工厂,运用sqlsessionfactory.opensession办法创立sqlsession目标。
sqlsession
sqlsession是mybatis的要害目标,是履行耐久化操作的目标,类似于jdbc中的connection。它是运用程序与耐久存储层之间履行交互操作的一个单线程目标,也是mybatis履行耐久化操作的要害目标。
sqlsession目标彻底包括以数据库为布景的一切履行sql操作的办法,它的底层封装了jdbc衔接,能够用sqlsession实例来直接履行现已映射的sql句子。每个线程都应该有自己的sqlsession实例。
sqlsession实例不能被同享,也是线程不安全的,绝对不能将sqlsession实例的引证放在任何类型的办理规模中,应该保证运用完sqlsession之后将它封闭。
sqlsession的办法见如下源码程序:

 1 public interface sqlsession extends closeable {
 2 t t selectone;
 4 t t selectone;
 6 e list e selectlist;
 8 e list e selectlist;
 10 e list e selectlist;
 12 k, v map k, v selectmap;
 14 k, v map k, v selectmap;
 16 k, v map k, v selectmap;
 18 t cursor t selectcursor;
 20 t cursor t selectcursor;
 22 t cursor t selectcursor;
 24 void select;
 26 void select;
 28 void select;
 30 int insert;
 32 int insert;
 34 int update;
 36 int update;
 38 int delete;
 40 int delete;
 42 void commit;
 44 void commit;
 46 void rollback;
 48 void rollback;
 50 list batchresult flushstatements;
 52 void close;
 54 void clearcache;
 56 configuration getconfiguration;
 58 t t getmapper;
 60 connection getconnection;
 61 }
 62 













 1 public interface sqlsession extends closeable {
 2 t t selectone;
 4 t t selectone;
 6 e list e selectlist;
 8 e list e selectlist;
 10 e list e selectlist;
 12 k, v map k, v selectmap;
 14 k, v map k, v selectmap;
 16 k, v map k, v selectmap;
 18 t cursor t selectcursor;
 20 t cursor t selectcursor;
 22 t cursor t selectcursor;
 24 void select;
 26 void select;
 28 void select;
 30 int insert;
 32 int insert;
 34 int update;
 36 int update;
 38 int delete;
 40 int delete;
 42 void commit;
 44 void commit;
 46 void rollback;
 48 void rollback;
 50 list batchresult flushstatements;
 52 void close;
 54 void clearcache;
 56 configuration getconfiguration;
 58 t t getmapper;
 60 connection getconnection;
 61 }
 62 


详细解说,此处不做记载,运用时查询即可。
留意:
实践运用中很少直接运用drivermanager来获取数据库衔接,一般运用datasource来获取数据库衔接,sqlsessionfactory底层封装了datasource。
mybatis的装备文件
此处回忆前文的test测验类文件代码:







 1 public class test {
 2 public static void main throws ioexception {
 3 inputstream inputstream = resources.getresourceasstream;
 4 sqlsessionfactory sqlsessionfactory = new sqlsessionfactorybuilder.build;
 5 sqlsession sqlsession = sqlsessionfactory.opensession;
 6 user user = new user;
 7 sqlsession.insert;
 8 sqlsession.commit;
 9 sqlsession.close;
 10 }
 11 }

 1 public class test {
 2 public static void main throws ioexception {
 3 inputstream inputstream = resources.getresourceasstream;
 4 sqlsessionfactory sqlsessionfactory = new sqlsessionfactorybuilder.build;
 5 sqlsession sqlsession = sqlsessionfactory.opensession;
 6 user user = new user;
 7 sqlsession.insert;
 8 sqlsession.commit;
 9 sqlsession.close;
 10 }
 11 }


首要,读取mybatis-config.xml合作文件:



 1 inputstream inputstream = resources.getresourceasstream;

 1 inputstream inputstream = resources.getresourceasstream;


然后初始化mybatis,创立sqlsessionfactory的实例:



 1 sqlsessionfactory sqlsessionfactory = new sqlsessionfactorybuilder.build;

 1 sqlsessionfactory sqlsessionfactory = new sqlsessionfactorybuilder.build;


最终获取sqlsession目标,履行sql句子:



 1 sqlsession sqlsession = sqlsessionfactory.opensession;
 2 ...
 3 sqlsession.insert;

 1 sqlsession sqlsession = sqlsessionfactory.opensession;
 2 ...
 3 sqlsession.insert;


由此可见,mybatis的初始化进程要经过以下过程:
1.调用sqlsessionfactorybuilder目标的build办法。
2.sqlsessionfactorybuilder会依据输入流inputstream等信息创立xmlconfigbuilder目标。
3.sqlsessionfactorybuilder调用xmlconfigbuilder目标的parse办法。
4.xmlconfigbuilder目标解析xml装备文件回来configuration目标。
5.sqlsessionfactorybuilder依据configuration目标创立一个defaultsessionfactory目标。
6.sqlsessionfactorybuilder回来defaultsessionfactory目标给客户端,供客户端运用。
装备文件特点
mybatis的装备文件包括了如下结构:
1.properties特点
properties中的特点都是可外部装备且可动态替换的,既能够在典型的java特点文件中装备,也能够经过properties元素的子元从来传递。
2.settings设置
settings是mybatis中非常重要的设置,会改动mybatis的运转时行为,settings元素示例如下:















 1 settings 
 2 !--指定mybatis所用日志的详细完成,敞开日志-- 
 3 setting name="logimpl" value="log4j"/ 
 4 !--敞开二级缓存-- 
 5 setting name="cacheenabled" value="true"/ 
 6 /settings 

 1 settings 
 2 !--指定mybatis所用日志的详细完成,敞开日志-- 
 3 setting name="logimpl" value="log4j"/ 
 4 !--敞开二级缓存-- 
 5 setting name="cacheenabled" value="true"/ 
 6 /settings 


其他选项,开发项目时能够按需查询运用,下面列出部分参数:


CONTACT
工作时间(Working Hours):周一至周五(Mon-Fri): 9:00-18:00 周末及节假日(Weekend & Holidays): 9:00-12:00
ADDRESS: 广东省湛江市开发区金地花园11栋

E-MAIL:13030199666@qq.com
PHONE: 13030199666
QQ: 13030199666

LEAVE A MESSAGE
You can say something,or design service and consulting