2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
《MyBatis teoria 40 kysymystä》Sisältää seuraavat 2 artikkelia:
Lisää uusi tunniste:keyProperty=“ID”
Se siitä.
<insert id="insert" useGeneratedKeys="true" keyProperty="userId" >
insert into user(user_name, user_password, create_time)
values(#{userName}, #{userPassword} , #{createTime, jdbcType=TIMESTAMP})
</insert>
(1) Kyselemällä SQL Määrittele käskyssä olevan kentän nimen alias, jotta kentän nimen alias on yhdenmukainen entiteettiluokan määritteen nimen kanssa.
<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>
(2) Hyväksytty <resultMap>
Kenttien nimien ja entiteettiluokkien attribuuttien nimien välisen vastaavuuden kartoittaminen.
<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) Käyttöliittymän toteutusluokan periytyminen SqlSessionDaoSupport
: Jotta voit käyttää tätä menetelmää, sinun on kirjoitettava mapper
käyttöliittymä,mapper
Käyttöliittymän toteutusluokka,mapper.xml
asiakirja.
sqlMapConfig.xml
Keskikokoinen kokoonpanomapper.xml
s asema.<mappers>
<mapper resource="mapper.xml 文件的地址" />
<mapper resource="mapper.xml 文件的地址" />
</mappers>
mapper
käyttöliittymä.SqlSessionDaoSupport
。mapper
Voidaan käyttää menetelmissäthis.getSqlSession()
Suorita tietojen lisääminen, poistaminen, muokkaaminen ja tarkistaminen.spring
kokoonpano.<bean id=" " class="mapper 接口的实现">
<property name="sqlSessionFactory" ref="sqlSessionFactory"></property>
</bean>
(2) Käyttö org.mybatis.spring.mapper.MapperFactoryBean
。
sqlMapConfig.xml
Keskikokoinen kokoonpanomapper.xml
asema josmapper.xml
jamapper
Liitännöillä on sama nimi ja ne ovat samassa hakemistossa, joten asetuksia ei tarvita tässä.mapper
käyttöliittymä.<mappers>
<mapper resource="mapper.xml 文件的地址" />
<mapper resource="mapper.xml 文件的地址" />
</mappers>
mapper.xml
keskellänamespace
vartenmapper
Käyttöliittymän osoite.mapper
Menetelmän nimi käyttöliittymässä jamapper.xml
määritelty vuonnastatement
/id
ole johdonmukainen.Spring
määritelty vuonna.<bean id="" class="org.mybatis.spring.mapper.MapperFactoryBean">
<property name="mapperInterface" value="mapper 接口地址" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>
(3) Käyttö mapper
skanneri.
mapper.xml
Asiakirjan kirjoittaminen.mapper.xml
keskellänamespace
vartenmapper
käyttöliittymän osoite;mapper
Menetelmän nimi käyttöliittymässä jamapper.xml
määritelty vuonnastatement
/id
ole johdonmukainen;mapper.xml
jamapper
Jos käyttöliittymän nimi pysyy yhtenäisenä, ei ole tarvettasqlMapConfig.xml
Määritä sisään.mapper
käyttöliittymä.Ilmoitusmapper.xml
tiedoston nimi jamapper
Liitäntöjen nimien on oltava johdonmukaisia ja sijoitettava samaan hakemistoon.mapper
skanneri.<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="mapper 接口包地址"></property>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
spring
Ota säiliöstämapper
toteutusobjekti.Käyttöliittymän sidonta on rajapinnan määrittäminen mielivaltaisesti MyBatisissa ja sitten käyttöliittymän menetelmien yhdistäminen SQL:n kanssa lausuntoSidonta, voimme kutsua suoraan käyttöliittymämenetelmää, joten verrattuna alkuperäiseen SqlSession
Tarjotut menetelmät antavat meille joustavammat valinnat ja asetukset.
On kaksi tapaa toteuttaa käyttöliittymän sidonta:
@Select
、@Update
Odota SQL-käskyjä sisältävien huomautusten sitoutumista;xml
Kirjoita SQL sidottavaksi. Tässä tapauksessa sinun on määritettäväxml
kartoitustiedostossanamespace
On oltava käyttöliittymän koko polkunimi.Kun SQL-käsky on suhteellisen yksinkertainen, käytä annotaatioiden sidontaa. Kun SQL-käsky on suhteellisen monimutkainen, käytäxml
Sidonta, yleiskäyttöinenxml
Sitoja on enemmän.mapper.xml
jokaisesta kohdassa määritellystä sql:stäid
sama.mapper.xml
jokaisesta kohdassa määritellystä sql:stäparameterType
samaa tyyppiä.mapper.xml
jokaisesta kohdassa määritellystä sql:stäresultType
samaa tyyppiä.Mapper.xml
tiedostossanamespace
Tämä on Mapper-käyttöliittymän luokkapolku.proxy
objekti, välityspalvelinobjektiproxy
Käyttöliittymämenetelmät siepataan ja suoritetaan sen sijaanMappedStatement
edustaa SQL:ää ja palauttaa sitten SQL-suoritustulokset.namespace
,Niin id
Voidaan toistaa, jos sitä ei ole määritettynamespace
,Niin id
ei voi toistaa;namespace
Ei vaadita, vain paras käytäntö.namespace + id
on kuin M ap < S string , M apped Statement > Kartta<String, MappedStatement>Mas<Strsisääng,MasedStatement> Käytettävä avain, jos sitä ei olenamespace
, vain loput id
,Niin,id
Päällekkäisyys voi saada tiedot korvaamaan toisensa.Sain sennamespace
, luonto id
Voit toistaa sen,namespace
eri,namespace + id
Luonnollisesti se on erilainen.MyBatis kapseloi kaikki Xml-määritystiedot All-In-One-raskaita objekteja Configuration
sisäinen. Xml-kartoitustiedostossa<parameterMap>
Tunniste jäsennetään muodossaParameterMap
objekti, jokainen sen alielementti jäsennetään muodossaParameterMapping
esine.<resultMap>
Tunniste jäsennetään muodossaResultMap
objekti, jokainen sen alielementti jäsennetään muodossaResultMapping
esine.Joka<select>
、<insert>
、<update>
、<delete>
Tunnisteet jäsennetään muodossaMappedStatement
Objekti, tagissa oleva SQL jäsennetään nimelläBoundSql
esine.
<resultMap>
Tunnisteet määrittelevät sarakkeiden nimien ja objektien attribuuttien nimien välisen yhdistämisen yksitellen.T_NAME AS NAME
, objektin attribuutin nimi on yleensä name
, pienet kirjaimet, mutta sarakkeiden nimissä ei ole merkitystä T_NAME AS NaMe
, MyBatis voi silti toimia normaalisti.Kun sarakkeiden ja määritteiden nimien välinen suhde on kartoitettu, MyBatis luo objekteja heijastuksen avulla ja määrittää heijastuksen avulla arvot yksitellen kohteen ominaisuuksille ja palauttaa ne niille ominaisuuksille, jotka eivät löydä kartoitussuhdetta , tehtävää ei voida suorittaa loppuun.
On monia muita tunnisteita, <resultMap>
、<parameterMap>
、<sql>
、<include>
、<selectKey>
, sekä dynaaminen SQL
9
9
9 tunnisteet:trim
、where
、set
、foreach
、if
、choose
、when
、otherwise
、bind
odota.sisään<sql>
SQL-fragmenttitunnisteiden kohdalla hyväksy<include>
Tunnisteet esittelevät SQL-fragmentteja,<selectKey>
Luo käytäntötunnisteet ensisijaisille avaimille, jotka eivät tue automaattista lisäystä.
Vaikka MyBatis jäsentää Xml-kartoitustiedoston järjestyksessä, viitattu B-tunniste voidaan silti määrittää missä tahansa, ja MyBatis voi tunnistaa sen oikein.
Periaate on, että MyBatis jäsentää A-tunnisteen ja huomaa, että A-tunniste viittaa B-tunnisteeseen, mutta B-tunnistetta ei ole jäsennetty eikä sitä ole vielä olemassa. Tällä hetkellä MyBatis merkitsee A-tunnisteen ratkaisemattomaksi ja jatkaa sitten Jäsentääksesi jäljellä olevat tunnisteet, mukaan lukien B. Tunnisteet, kun kaikki tunnisteet on jäsennetty, MyBatis jäsentää uudelleen ratkaisemattomiksi merkityt tunnisteet.
Voi, ei vain voi Yksi monille, yksi yhteen,Tarpeeksi hyvin Monista moneen, monta yhteen . Tämä saavutetaan seuraavasti:
MyBatis voi kartoittaa luettelointiluokkia, vaan se voi kartoittaa minkä tahansa kohteen taulukon sarakkeeseen.Kartoitusmenetelmä on mukautettuTypeHandler
, saavuttaa TypeHandler
/setParameter()
jagetResult()
käyttöliittymämenetelmiä.
TypeHandler
Siinä on kaksi toimintoa, joista toinen on täydentääjavaType
kohtaanjdbcType
Muunnos, toinen on valmisjdbcType
kohtaanjavaType
Muunnos näkyy muodossasetParameter()
jagetResult()
Molemmat menetelmät edustavat sql-kysymysmerkin paikkamerkkiparametrien asettamista ja vastaavasti sarakekyselyn tulosten saamista.
MyBatisin dynaaminen SQL mahdollistaa dynaamisen SQL:n kirjoittamisen tunnisteiden muodossa Xml-kartoitustiedostoon täydentämään MyBatisin tarjoamat loogisen arvioinnin ja dynaamisen liittämisen toiminnot
9
9
9 Dynaamiset SQL-tunnisteet:trim
、where
、set
、foreach
、if
、choose
、when
、otherwise
、bind
。
Sen suoritusperiaate on käyttää OGNL
Laske lausekkeen arvo SQL-parametriobjektista ja liitä SQL dynaamisesti lausekkeen arvon mukaan täydentääksesi dynaamisen SQL:n toimintoa.
MyBatis käyttää RowBounds
Objekti on sivuttu, se on tarkoitettuResultSet
Tulosjoukon suorittama muistihaku ei ole fyysistä hakua. Voit kirjoittaa parametreja suoraan fyysisellä hakutoiminnolla SQL:ssä fyysisen hakutoiminnon suorittamiseksi tai voit käyttää sivulaajennusta fyysisen sivun suorittamiseen.
Hakulaajennuksen perusperiaate on käyttää MyBatisin tarjoamaa liitännäistä mukautetun laajennuksen toteuttamiseen, kaapata laajennuksen sieppausmenetelmässä suoritettava SQL ja kirjoittaa sitten SQL uudelleen sen mukaan. kohtaan dialect
Murre, lisää vastaavat fyysiset sivulausekkeet ja fyysiset sivuparametrit.
Esimerkki:
select * from student
Kun olet siepannut SQL:n, kirjoita se uudelleen muotoon:
select t.* from (select * from student) t limit 0, 10
MyBatis voi kirjoittaa vain ParameterHandler
、ResultSetHandler
、StatementHandler
、Executor
Tämä
4
4
4 Eräänlainen käyttöliittymälaajennus, MyBatis käyttää JDK:n dynaamista välityspalvelinta luomaan välityspalvelinobjekteja liitäntöille, jotka on siepattava liitäntämenetelmän sieppaustoiminnon toteuttamiseksi.
4
4
4 käyttöliittymäobjektin menetelmä, se siirtyy erityisesti sieppausmenetelmäänInvocationHandler
/invoke()
Menetelmät sieppaavat tietysti vain ne menetelmät, jotka määrität siepattavaksi.
Ota käyttöön MyBatis Interceptor
Käyttöliittymä ja ohitusintercept()
Menetelmä, kirjoita sitten lisäosan huomautuksia ja määritä minkä käyttöliittymän menetelmät haluat siepata. Muista, että älä unohda määrittää määritystiedostoon kirjoittamaasi laajennusta.
PerpetualCache
HashMap-paikallinen välimuisti, sen tallennusalue on Session, kun istuntoflush
taiclose
Sen jälkeen kaikki istunnon välimuistit tyhjennetään ja ensimmäisen tason välimuisti otetaan oletusarvoisesti käyttöön.PerpetualCache
, HashMap-tallennustila, ero on siinä, että sen tallennuslaajuus on Mapper
(Namespace
), ja tallennuslähdettä voidaan mukauttaa, kuten Ehcache
.Toisen tason välimuisti ei ole oletuksena käytössä, jotta toisen tason välimuisti voidaan ottaa käyttöön, toisen tason välimuistin attribuuttiluokka on otettava käyttöön.Serializable
Serialisointirajapinta (voidaan käyttää objektin tilan tallentamiseen), konfiguroitavissa sen kartoitustiedostossa<cache/>
。C
/ U
/ D
Toiminnon jälkeen oletusarvoisesti kaikki tämän alueen tiedostotselect
Välimuisti tulee olemaanclear
。