MyBatis์์ ์ ๋ฌ๋ฐ์ ๊ฐ์ฒด(MyObject)์ ํ๋์ ํน์ ๊ฐ์ ์ธํ ํ ๋ selectKey ํ๊ทธ๋ฅผ ์ด์ฉํ ์ ์๋ค.
์๋ฅผ๋ค์ด MyObject๊ฐ ์๋ ๋ ๊ฐ์ ํ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ํด๋์ค๋ผ๊ณ ๊ฐ์ ํ์.
String id;
String name;
MyBatis๋ฅผ ์ด์ฉํ์ฌ MyObject๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๋ ฅํ๊ณ ์ถ์ ๋ ์ด๋ฆ๊ฐ๋ง ํ๋ฉด์์ ์ ๋ฌ๋ฐ๊ณ ID๋ฅผ ์๋์ผ๋ก sequence๋ฅผ ๋ฐ์ ์ ๋ ฅ ํด์ค ์ ์์ผ๋ฉฐ, ์ด๋ MyObject์ idํ๋์ ๊ฐ ์ธํ
<insert id="insert" parameterType="MyObject">
<selectKey keyProperty="id" resultType="int" order="BEFORE">
select nextval('sequence_id')
</selectKey>
<![CDATA[
INSERT INTO person(id, name)
VALUES (#{id}, #{name});
]]>
</insert>
order="BEFORE" ์ต์ ์ insert ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ธฐ์ ์ keyProperty์ ๊ฐ์ ์ธํ ํ๋ผ๋ ์๋ฏธ์ด๋ค.
์๋ฐ ์์ค๋จ์์ ๊ฐ์ฒด์ id์ ๊ฐ์ ์ธํ ํ์ง ์๊ณ ์๋๋ฐ ์ฟผ๋ฆฌ ์คํ ํ์ id๊ฐ์ด ์ธํ ๋์ด์ ธ์ ๋์ค๋ ์ผ์ด์ค๊ฐ ์์๋๋ฐ ์ด๊ฒ ๋ญ๊ฐ ์ถ์ด ์ฐพ์๋ณด๋ค๊ฐ ์๊ฒ๋จ.
mybatis์ค์ ํ์ผ์๋ userGeneratedKeys ์ค์ ์ด ์์ด์ผ ํ๋ค.
<configuration>
<settings>
<setting name="cacheEnabled" value="false"/>
<setting name="useGeneratedKeys" value="true"/>
<setting name="defaultExecutorType" value="REUSE"/>
</settings>
</configuration>
์ ์ฒ๋ผ ์ฌ์ฉํ ์๋ ์์ผ๋ ์ ๋ ๊ฒ ์ฌ์ฉํ๋ ์ผ์ด์ค๊ฐ ๋ง์ง ์๋ค๋ฉด ์ฟผ๋ฆฌ์ ์ง์ ์ต์ ์ผ๋ก ์ค ์๋ ์๋ค.
<insert id="insertAuthor" parameterType="domain.blog.Author" flushCache="true" statementType="PREPARED" keyProperty="" keyColumn="" useGeneratedKeys="" timeout="20">
์์ฑ์ ๋ํ ์ค๋ช ์ ์๋์ ๊ฐ๋ค.
์์ฑ | ์ค๋ช |
---|---|
id | ๊ตฌ๋ฌธ์ ์ฐพ๊ธฐ ์ํด ์ฌ์ฉ๋ ์ ์๋ ๋ค์์คํ์ด์ค๋ด ์ ์ผํ ๊ตฌ๋ถ์ |
parameterType | ๊ตฌ๋ฌธ์ ์ ๋ฌ๋ ํ๋ผ๋ฏธํฐ์ ํจํค์ง ๊ฒฝ๋ก๋ฅผ ํฌํจํ ์ ์ฒด ํด๋์ค๋ช ์ด๋ ๋ณ์นญ |
flushCache | ์ด ๊ฐ์ true ๋ก ์ ํ ํ๋ฉด ๊ตฌ๋ฌธ์ด ํธ์ถ๋ ๋๋ง๋ค ์บ์๊ฐ ์ง์์ง๊ฒ์ด๋ค(flush). ๋ํดํธ๋ false ์ด๋ค. |
timeout | ์์ธ๊ฐ ๋์ ธ์ง๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์ฒญ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ต๋์๊ฐ์ ์ค์ ํ๋ค. ๋ํดํธ๋ ์ ํ ํ์ง ์๋ ๊ฒ์ด๊ณ ๋๋ผ์ด๋ฒ์ ๋ฐ๋ผ ๋ค์ ์ง์๋์ง ์์ ์ ์๋ค. |
statementType | STATEMENT, PREPARED ๋๋ CALLABLE์ค ํ๋๋ฅผ ์ ํํ ์ ์๋ค. ๋ง์ด๋ฐํฐ์ค์๊ฒ Statement, PreparedStatement ๋๋ CallableStatement๋ฅผ ์ฌ์ฉํ๊ฒ ํ๋ค. ๋ํดํธ๋ PREPARED ์ด๋ค. |
useGeneratedKeys | (์ ๋ ฅ(insert, update)์๋ง ์ ์ฉ) ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ด๋ถ์ ์ผ๋ก ์์ฑํ ํค (์๋ฅผ๋ค์ด MySQL๋๋ SQL Server์ ๊ฐ์ RDBMS์ ์๋ ์ฆ๊ฐ ํ๋)๋ฅผ ๋ฐ๋ JDBC getGeneratedKeys๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋๋ก ์ค์ ํ๋ค. ๋ํดํธ๋ false ์ด๋ค. |
keyProperty | (์ ๋ ฅ(insert, update)์๋ง ์ ์ฉ) getGeneratedKeys ๋ฉ์๋๋ insert ๊ตฌ๋ฌธ์ selectKey ํ์ ์๋ฆฌ๋จผํธ์ ์ํด ๋ฆฌํด๋ ํค๋ฅผ ์ ํ ํ ํ๋กํผํฐ๋ฅผ ์ง์ . ๋ํดํธ๋ ์ ํ ํ์ง ์๋ ๊ฒ์ด๋ค. ์ฌ๋ฌ๊ฐ์ ์นผ๋ผ์ ์ฌ์ฉํ๋ค๋ฉด ํ๋กํผํฐ๋ช ์ ์ฝค๋ง๋ฅผ ๊ตฌ๋ถ์๋ก ๋์ดํ ์ ์๋ค. |
keyColumn | (์ ๋ ฅ(insert, update)์๋ง ์ ์ฉ) ์์ฑํค๋ฅผ ๊ฐ์ง ํ ์ด๋ธ์ ์นผ๋ผ๋ช ์ ์ ํ . ํค ์นผ๋ผ์ด ํ ์ด๋ธ์ด ์ฒซ๋ฒ์งธ ์นผ๋ผ์ด ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค(PostgreSQL ์ฒ๋ผ)์์๋ง ํ์ํ๋ค. ์ฌ๋ฌ๊ฐ์ ์นผ๋ผ์ ์ฌ์ฉํ๋ค๋ฉด ํ๋กํผํฐ๋ช ์ ์ฝค๋ง๋ฅผ ๊ตฌ๋ถ์๋ก ๋์ดํ ์ ์๋ค. |
databaseId | ์ค์ ๋ databaseIdProvider๊ฐ ์๋ ๊ฒฝ์ฐ ๋ง์ด๋ฐํฐ์ค๋ databaseId ์์ฑ์ด ์๋ ๋ชจ๋ ๊ตฌ๋ฌธ์ ๋ก๋ํ๊ฑฐ๋ ์ผ์นํ๋ databaseId์ ํจ๊ป ๋ก๋๋ ๊ฒ์ด๋ค. ๊ฐ์ ๊ตฌ๋ฌธ์์ databaseId๊ฐ ์๊ฑฐ๋ ์๋ ๊ฒฝ์ฐ ๋ชจ๋ ์๋ค๋ฉด ๋ค์ ๋์จ ๊ฒ์ด ๋ฌด์๋๋ค. |
'๐ป Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] pipe() and fork() (ํ์ดํ, ํฌํฌ) (0) | 2019.02.15 |
---|---|
[C++] Heap Memory Allocation of Several Varibles ๋ณ์์ ํ๋ฉ๋ชจ๋ฆฌ ํ ๋น (0) | 2019.02.15 |
[Git] ํ๊ทธ ์ญ์ ํ๊ธฐ (removing git tag) (0) | 2018.01.24 |
[ Node.js in Action ] 13์ฅ ์์ฝ (0) | 2017.06.03 |
[ Node.js in Action ] 3์ฅ ์์ฝ (0) | 2017.06.03 |