Technology sharing

[MyBatis] MyBatis theoria 40 quaestionum (2).

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

MyBatis theoria 40 quaestionum-Continetur sequentia 2 capitula:


21. Quomodo generatum primarium clavem obtinere?

Add in new tag:keyProperty=“ID” Id est.

<insert id="insert" useGeneratedKeys="true" keyProperty="userId" >
	insert into user(user_name, user_password, create_time)
	values(#{userName}, #{userPassword} , #{createTime, jdbcType=TIMESTAMP})
</insert>
  • 1
  • 2
  • 3
  • 4

22.WhenEntity genusQuid facerem, si nomina attributa diversa sint ab agro nomina in tabula?

(1) By querying SQL Definire alias agri nomen in eo quod alias agri nomen convenit cum attributo nomine entis ordinis.

<select id="getOrder" parameterType="int" resultType="com.jourwon.pojo.Order">
	select order_id id, order_no orderno, order_price price form orders
	where order_id=#{id};
</select>
  • 1
  • 2
  • 3
  • 4

(2) Pass <resultMap> Ad describendam unum-ad-unam correspondentiam inter nomina campi et entitatis nominum attributorum.

<select id="getOrder" parameterType="int" resultMap="orderResultMap">
	select * from orders where order_id=#{id}
</select>

<resultMap type="com.jourwon.pojo.Order" id="orderResultMap">
	<!-- 用id属性来映射主键字段 -->
	<id property="id" column="order_id">
	<!-- 用result属性来映射非主键字段,property为实体类属性名,column为数据库表中的属性 -->
	<result property="orderno" column="order_no" />
	<result property="price" column="order_price" />
</reslutMap>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

23.Quae modi sunt scribere Mapper?

(1) Interface implementation class hæreditatem SqlSessionDaoSupport: Ad hanc methodum utendum, scribere debes mapper interface;mapper Interface implementation class,mapper.xml documentum.

  • exist sqlMapConfig.xml Medium configurationemapper.xml prsecipuum.
<mappers>
	<mapper resource="mapper.xml 文件的地址" />
	<mapper resource="mapper.xml 文件的地址" />
</mappers>
  • 1
  • 2
  • 3
  • 4
  • definition mapper instrumenti.
  • Implement genus integration SqlSessionDaoSupportmapper Potest in modisthis.getSqlSession() Data facere additionem, deletionem, immutationem et sequatur.
  • spring figuratio.
<bean id=" " class="mapper 接口的实现">
	<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>
  • 1
  • 2
  • 3

(2) Usus org.mybatis.spring.mapper.MapperFactoryBean

  • exist sqlMapConfig.xml Medium configurationemapper.xml situm ifmapper.xml etmapper Interfaces idem nomen habent et in eodem directorio sunt, ut nulla hic figura requiratur.
  • definition mapper instrumenti.
<mappers>
	<mapper resource="mapper.xml 文件的地址" />
	<mapper resource="mapper.xml 文件的地址" />
</mappers>
  • 1
  • 2
  • 3
  • 4
  • mapper.xml mediumnamespace for*mapper Oratio interface.
  • mapper Modus nominis in interface andmapper.xml definiturstatement of*id consentaneum esse.
  • Spring definitur in.
<bean id="" class="org.mybatis.spring.mapper.MapperFactoryBean">
	<property name="mapperInterface" value="mapper 接口地址" />
	<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
  • 1
  • 2
  • 3
  • 4

(3) Usus mapper scanner.

  • mapper.xml Documenti scripto.
    • mapper.xml mediumnamespace for*mapper Oratio interface;
    • mapper Modus nominis in interface andmapper.xml definiturstatement of*id constare;
    • Si mapper.xml etmapper Si nomen interfaciei sibi constet, nihil opus estsqlMapConfig.xml Configurare in .
  • definition mapper instrumenti.Noticemapper.xml file nomen etmapper Interface nomina constant et in eodem presul esse debent.
  • Configurationis mapper scanner.
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
	<property name="basePackage" value="mapper 接口包地址"></property>
	<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
  • 1
  • 2
  • 3
  • 4
  • Post uti a scanner ex spring Ut a vasemapper exsecutionem rei.

24.What is? MyBatis ligamen interface? Quae sunt exsecutionis modi?

Obligatio interfaciei est ad arbitrium interfaciei in MyBatis definire, et modos interfaciei cum SQL coniungere. diciturObligatio, directe appellare possumus methodum interfaciendi, ita comparatum cum originali SqlSession Modi provisi nos permittunt electiones et occasus flexibiliores habere.

Dupliciter ligamen instrumenti efficiendi;

  • Obligatio per annotationes addere est @Select@Update Exspecta adnotationes, quae continent SQL dictas ligare;
  • pass xml Scribe SQL intus ligare. In hoc casu, specificare debesxml in tabularum faciendarum filenamespace Plena debet esse pathname interface.Cum enuntiatio SQL relative simplex est, annotationem ligans uterexml Binding, General usexml Plures sunt ligaturae.

25. Quae sunt requisita in tabula instrumenti MyBatis* appellandi?

  • Mapper interface modum nominis et mapper.xml cuiusque sql definiturid eodem.
  • Modus initus moduli modi interface Mapper et mapper.xml cuiusque sql definiturparameterType eiusdem generis.
  • De output parametri genera Mapper interface modis et mapper.xml cuiusque sql definiturresultType eiusdem generis.
  • Mapper.xml in tabellanamespace Id genus est via Mapper interface.

26. Quomodo hoc opus interface Dao? Si modus in Dao interfaciei parametros diversos habet, methodus onerari potest?

  • Principium operans Dao interfaciei est JDK procuratorem dynamicum. proxy rem procuratorem objectumproxy Modi instrumenti intercipiendi et executi erunt locoMappedStatement SQL repraesentatur, deinde redit exsecutio SQL eventus.
  • Methodi Dao interface non onerari, quia Omnino idoneus nomen + modus nominis Salutaris et inveniendi consilia.

27. In tabula Xml destinata MyBatis, potestne id iterari in diversis fasciculis Xml destinandis?

  • Alia Xml tabularum tabularum faciendarum, si configurati namespace,So id Iterari potest;namespace,So id iterari non potest;namespace Non requiritur, sicut praxis.
  • Ratio est namespace + id est ut M ap &lt; S tring , M apped S tament &gt; Map<String, MappedStatement>Map<Str*ing*,Mapped*Statement> Clavis uti, si nemonamespace, Reliquum id;id Duplicatio potest causare notitia se rescribere.obtinuit eamnamespace, natura id Repetere potes;namespace diversus;namespace + id Naturaliter aliter est.

28. Breviter describemus tabularum tabularum geographicarum inter MyBatis' Xml tabularum tabularum et MyBatis' internae notae structuram?

MyBatis encapsulat omnes Xml configurationes informationes in omnes-in-unum heavyweight objects Configuration internum. In tabula tabularia Xml destinata;<parameterMap> Tag ut parsedParameterMap objectum, quodlibet ejus infantis elementa parsed eruntParameterMapping objectum.<resultMap> Tag ut parsedResultMap objectum, quodlibet ejus infantis elementa parsed eruntResultMapping objectum.Omne<select><insert><update><delete> Tags parsed utMappedStatement Objectum SQL in tag parteed eritBoundSql objectum.

29. Quomodo MyBatis encapsulat exsecutionem SQL in obiectis scopis et illas reddit? Quae sunt mapping formae?

  • Primum est utendum <resultMap> Tags definire tabularum relationem inter columnae nomina et obiectum attributum nomina singillatim.
  • Secundum est uti columna SQL alias functione et scribere columnam alias obiecto nomine attributum, ut T_NAME AS NAMEObiectum attributum nomen plerumque name, lowercase, columna nomina non sunt sensitiva T_NAME AS NaMe, MyBatis adhuc operari solet.

Postquam nomina columnarum inter nomina et nomina attributa habens relationem, MyBatis objecta per reflexionem creat, et reflexionem adhibet ad singulatim valores assignandos ad proprietates obiecti et ea retrahendas assignatio absolvi non potest.

30.In addition to the common select | . insert | . update | .

Sunt multa alia tags; <resultMap><parameterMap><sql><include><selectKey>, plus dynamica SQL 9 9 9 tags:trimwheresetforeachifchoosewhenotherwisebind manere.in<sql> Ad SQL fragmentum tags, pass<include> Tags SQL fragmenta inducere;<selectKey> Genera consilium pittacia pro clavis primariis quae auto-incrementum non sustinent.

31. In tabula MyBatis destinata, si A tag references contentum B tag per includunt, potestne B tag definiri post A tag, an ante tag definiri debet?

Etsi MyBatis parses tabellae Xml destinativae in ordine, in referenced B tag tamen alicubi definiri potest, et MyBatis recte pervidere potest.

Principium est MyBatis parses A tag et invenit A tag indicios B tag, sed B tag nondum parsed non esse Reliquas tags, in quibus B. Tags, post omnes tags parsed, MyBatis rursus parse illae tags ut dubitatur.

32. Num MyBatis unum-ad-multos et unum contactum quaesitum praestare potest?

potest non solum potest unus ad plures, unus ad unumBene satis Multi-ad-multi, multi ad unum . Quod quidem ita se habet;

  • Separatum SQL mitte ad obiectum interrogationis relato, id principale assigna, et tunc principale redde.
  • Utens inquisitionibus nidificatis, quaestionibus similis iungo, una pars est valor obiecti A attributus, altera pars est valor obiecti consociati B. Utilitas est, dum unus attributus mittitur, objectum principale ac obiectum adiunctum inveniri potest.
  • subquery

33.Can MyBatis map Enum enumerationis genus?

MyBatis can map Enumeratio classes.Mapping modus est nativus unumTypeHandler, perfice TypeHandler of*setParameter() etgetResult() instrumenti modi.

TypeHandler Duo munera habet, unum ad perficiendumjavaType tojdbcType Conversio, secunda completurjdbcType tojavaType Conversio relucetsetParameter() etgetResult() Duo modi repraesentant sql signum interrogationis parametri collocandi et obtinendi columnam inquisitionis eventus respective.

34.What MyBatis dynamicam SQL facit? Qualis dynamicus SQL ibi sunt? Potesne breviter describere principium executionis SQL dynamici?

MyBatis dynamicus SQL permittit nos scribere dynamicam SQL in forma tags in Xml tabularum tabularum ad perficiendas functiones iudicii logici et dynamicae splicationis SQL 9 9 9 Dynamic SQL tags:trimwheresetforeachifchoosewhenotherwisebind

Executio eius principium est uti OGNL Valorem locutionis ab obiecto SQL parametri et dynamice splice SQL secundum valorem expressionis ad munus dynamici SQL complendum.

35.How facit MyBatis paging? Quid est principium paginae obturaculum-in?

MyBatis usus RowBounds Objectum paginated est forResultSet Memoria pagina peracta ex statuto paginae physicae non est. Parametris cum pagina physica in SQL directe scribere potes ad functionem physicam perficiendam, vel pagina obturaculum ad perficiendam paginas physicas uti potes.

Principium paginae obturaculi in obturaculum-in interface provisum est a MyBatis ad obturaculum deducendum in usu, intercipiendum SQL ad efficiendum in modo obturaculum intercipiendum, et deinde rescribe SQL secundum to dialect Dialectica, adde propositiones paginas physicas respondentes et parametri paginas physicas.

Exemplum:

select * from student
  • 1

SQL interceptis, rescribe ut:

select t.* from (select * from student) t limit 0, 10
  • 1

36. Breviter describere principium operativum MyBatis obturaculum-in et quomodo scribere obturaculum-in?

MyBatis non solum scribere ParameterHandlerResultSetHandlerStatementHandlerExecutor hoc 4 4 4 Obturaculum quoddam interfaciendi in, MyBatis dynamicum procuratorem JDK utitur ad objecta procuratoria generanda pro interfaces quae interfacienda sunt ad modum interceptionis functionis interfaciendi deducendi. 4 4 4 methodus objecti interfaciei, modus interceptionis intrabit, speciatim .InvocationHandler of*invoke() Methodi, scilicet, modos istos modos intercipies, quos intercipere definis.

Effectus MyBatis Interceptor Interface et overrideintercept() Methodo, scribe adnotationes pro obturatorio et specificare quos modos quorum interfacies vis intercipere.

37. MyBatis primi gradus et secundi gradus cache

  • Level I cache: fundatur PerpetualCache Cache locale HashMap, eius ambitus Sessio, cum Sessioflush or *close Post hoc, omnia cella in sessione patebunt, et primi gradus cella vertetur in defalta.
  • Secundus gradus cella eandem mechanismum habet ac primi gradus cella, et etiam defalta adhibetur. PerpetualCache, HashMap reposita, differentia est quod scopum suum repositionis est MapperNamespace) et fons repositionis nativus esse potest, ut Ehcache .Secundus-gradus cache defalta non permittit. Ut secundus gradus cache, secundum gradus cache attributum genus necessario perficiatur.Serializable Serialization interface (potest salvare statum rei), configurable in mapping file<cache/>
  • Ad cache data renovatio mechanismus, cum quidam scopus (primus gradus cache Sessio / secundi gradus cache Nomenspace) est C / U / D Post operationem, omnia fasciculi in hoc ambitu defaltaselect Latibulum in eritclear