MyBatisは、通常のSQLクエリ、ストアドプロシージャ、高度なマッピングをサポートする永続レイヤーフレームワークです。
MyBatisは、ほぼすべてのJDBCコードとパラメーターの手動設定と、結果セットの検索カプセル化を排除します。
MyBatisは、構成とオリジナルマッピング、マッピングインターフェイス、JavaのPojo(プレーンオールドJavaオブジェクト)にデータベースのレコードに、簡単なXMLまたはアノテーションを使用できます。
各MyBatisアプリケーションは、SQLSessionFactoryオブジェクトのインスタンスをコアとして取得します。
SQLSessionFactoryオブジェクトのインスタンスは、SQLSessionFactoryBuilderオブジェクトを介して取得できます。 SQLSessionFactoryBuilderオブジェクトは、XML構成ファイルを介して、または以前の使用管理で準備されたConfigurationクラスインスタンスから構築できます。
DataSource dataSource = blogdatasourceFactory.getBlogDataSource(); TransactionFactory TransactionFactory = new JDBCTransactionFactory(); //環境環境=新しい環境(「開発」、TransactionFactory、DataSource); Configuration Configuration = new Configuration(環境); sqlSessionFactory = new SQLSessionFactoryBuilder()。ビルド(Configuration);
この場合、構成はマッパークラスを追加することであることに注意してください。 MapperクラスはJavaクラスです。これには、XMLファイルの依存関係を回避するためのSQLマッピングステートメントの注釈が含まれていますが、XMLマッピングは、最も高度なマッピング(ネストされた結合マッピングなど)でまだ必要です。
このため、XML構成ファイルが存在する場合、MyBatisはピアXMLファイルを自動的に見つけてロードします(この場合、クラスパスの下のblogmapper.classクラスのクラス名に基づいて、blogmapper.xmlはロードされます。
<?xml version = "1.0" encoding = "utf-8"?> <!doctype mapper public " - // mybatis.org//dtd mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtdモデルプロパティ名がデータテーブルの列名と矛盾するという問題を解決できますjdbctypeは大文字である必要があります - > <resultmap type = "user" id = "usermap"> <id property = "id" column = "javatype =" int "jdbctype =" integer "/> <result property =" column " jdbctype = "varchar"/> <resultプロパティ= "age" column = "age" javatype = "int" jdbctype = "integer"/> </resultmap> <! - ここで結果に注意してください。 column ==プロパティの場合、Javaオブジェクトを直接返すことができます。属性名が列名と矛盾している場合、ソリューションは次のとおりです。1。結果マップを使用します。 2。ハッシュマップを返します。 3.クエリステートメントにエイリアスを使用 - > <id = "getuser" parametertype = "int" resultmap = "usermap"> select * from id =#{id} </select> <delete> <deleteType = "int"> DELETE> DELETE T_USER WHERE ID =##{ID} <UPDATE> < parametertype = "user">更新t_user set username =#{name}、age =#{age} where id =#{id} </update> <挿入id = "insertuser" parametertype = "user"> t_user(username、age)values(#name} {name})</sign>> </clumm n-common n-clumm n-clod n-clodmeername)したがって、結果はusermapを使用します - > <select id = "getusers" resultmap = "usermap"> select * from t_user </select> </mapper> mybatis.xmlに登録[springと組み合わせると、この構成ファイルは必須ではありません]
mybatis構成ファイル
<?xml version = "1.0" encoding = "utf-8"?> <!doctype構成public " - // mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"クラスエイリアス - > <TypeAliase> <! - <Typealias Type = "com.web.model.user" airas = "user"/> - > <パッケージ名= "com.web.model"/> </typealiase> <! - 開発:開発モード作業:ワークモード - > <環境= "開発"> <環境id = <enverysion id "> <enveryson type = "Pooled"> <プロパティ名= "driver" value = "$ {driver}" /> <property name = "url" value = "$ {url}" /> <プロパティname = "username" value = "$ {username}" /> <プロパティ名= "パスワード" value = "$ {{$ {password} resource = "com/web/mapper/usermapper.xml"/> <mapper resource = "com/mapper/ordermapper.xml"/> <mapper/> </mappers> </configuration>ここでは、XMLファイルを使用して、SQLSessionFactoryとSQLSessionを取得します。
public static sqlsessionFactory getFactory(){/*src dir*/string resource = "mybatis.xml";/*mybatisutils.class.getResourceasStream(resource)----それは間違っています!!! * 2つの上下を区別してください * */inputstream inputstream = mybatisutils.class.getClassloader()。GetResourceAsStream(リソース); sqlSessionFactory Factory = new SQLSessionFactoryBuilder()。 1.Factory.Opensession(true); 2.Session.commit(); *//*sql xml not annotation*/@@public void testadd(){sqlsession session = mybatisutils.getFactory()。opensession(); stringステートメント= "com.web.mapper.usermapper.insertuser";/*effect rows*/int session.sessert(intert insert(*defation(unt ut ut us atis); commit*/session.commit(true); session.close(); system.out.println( "effect rows .."+insert);}@public void testselect(){/*上記に等しいAuto Commitを設定します。 "com.web.mapper.usermapper.getuser";/*効果の行を返します*/user user = sesse.selectone(statement、3); system.out.println( "effect rows .."+user);}@public void testupdate(){){sqlsession session = mybatisutils.thingutory(); "com.web.mapper.usermapper.updateuser";/*効果列を返します*/int update = session.update(statement、new user(3、 "tom4"、13)); system.out.println( "effect rows .."+update);}@@test public void testelete = "com.web.mapper.usermapper.deleteuser";/*effect rows*/int delete.delete.delete(statement、6);/*コミット*/session.commit(); commit(); commit(); commit(); out.println( "effect rows .."+delete); session.close();}@test public void sessions() mybatisutils.getFactory()。opensession(); stringステートメント= "com.web.usermapper.getusers";/*list the list <user>*/list <user> users = session.selectlist(statement); session.commit(); system.out.out.println( "effect rows .."+close(); "+close();parametertypeとresultTypeはhashmapです。
<select id = "getuserformap" parametertype = "hashmap" resultType = "hashmap"> select * from c_user where id =#{id}; </select> @test public void getUserformap(){sqlsession session = mybatisutils.getfactory()。opensession(); string statement = "com.web.usermapper.getuserformap"; hashmap <string、object> map = new hashmap <string、object> session.selectone(statement、map);/*デフォルトは自動コミット*/session.commit(true); session.close(); system.out.println( "effect rows .."+selectone+"、class:"+selectone.getclass();} effect rows .. {id = 1、age = 12、name = luli}、class:class java.util.hashmap要約すると、MyBatisはパラメーターのタイプと結果タイプに従って自動的に解析およびカプセル化することがわかります。
<選択id = "getListPage" parametertype = "hashmap" resultmap = "siteextenddaomap"> select id、site_id、site_name、site_number、umbunce、都市、エリア、住所、internal_number、latitude、tb_siteからの緯度-Use dynamic sql <triids = "use ="およびcheckState!= '' "> and check_state = {checkState、jdbctype = integer} </if> <if sited!=" siteid!= '' "> and site_id like concat( '%'、#{siteid}、 '%')< concat( '%'、#{sitename}、 '%')</if> <if> "siteNumber!= null and siteNumber!= ''"> and site_number like concat( '%'、#{siteNumber}、 '%') #{siteNumber}、 '%')</if> <if> "province!= null and bovince!= ''"> and {utunce} </if> <if> <if> <"city!= null and City!= ''" -add sort <if test = "sortname!= null and sortname!= '' and sortorder!= null and sortorder!= null and sortorder!= null and sortorder!= ''"> order by $ {sortname} $ {sortorder} </if> -add paging lime $ {(page-1)*pagesize}、$ {pagesize}パラメーターがpojoの場合、MyBatisはオブジェクトからIDを自動的に取得します。
<delete id = "delete" parametertype = "user"> tb_userからの削除=#{id} </delete> <delete id = "deletebyid" parametertype = "long"> tb_userからの削除= {id}} </delete> <delete id = "deleteByids"> tb_userからdelete where id in - use foreach collection = "list" item = "id" open = "(" separator = "、" close = ")">#{id} </foreach> </delete> </delete>通常、getListPageと組み合わせて使用されます。
<選択id = "getRows" parametertype = "hashmap" resultType = "long"> tb_sys_role <if select count = "keysysrole!= null"> <トリムプレフィックス= " <if test = "keysyrole.name!= null and keysrole.name!= ''"> and name =#{keysyrole.name} </if> <if> <if> "keysrole.available!= null and keysrole.available!= ''" </select>上記は、コード分析のためにXMLを使用したMyBatisに関するこの記事のすべての内容です。私はそれが誰にでも役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!