LoginSignup
20
21

More than 5 years have passed since last update.

oracle db、mybatisのtips

Last updated at Posted at 2015-02-23

拾い集めたtipsのまとめ。

シーケンスの一覧取得

SELECT * FROM all_objects WHERE object_type='SEQUENCE'

upsert

MERGE INTO TEST01
USING DUAL
ON (ID=4)
WHEN MATCHED THEN
    UPDATE SET TEXT='DDDD'
WHEN NOT MATCHED THEN
    INSERT ( ID, TEXT ) VALUES ( 4,'DDDD' )
;

mybatisでoracle db のmerge文

<update id="exceMerge" parameterType="hashmap">
        MERGE INTO USERS U USING DUAL ON (U.PROPERTY_NAME=#{prop_name}) 
        WHEN MATCHED THEN 
        UPDATE SET U.PROPERTYVALUE=#{prop_value}, U.MESSAGE=#{message,javaType=String,jdbcType=CLOB}
        WHEN NOT MATCHED THEN 
        INSERT(PROPERTY_NAME, PROPERTYVALUE, MESSAGE) VALUES (#{prop_name},#{prop_value},#{message,javaType=String,jdbcType=CLOB})
</update>

シーケンス採番によるinsert

INSERT INTO USER_MASTER (
        USER_NAME, DEPT_NO, USER_ID
) VALUES (
        'xxx'
        '1001', 
         seq01.nextval
) ;

シーケンスから採番

select SEQ_HOGE.nextval from dual;

シーケンスから一度に複数個を採番

SELECT HOGE_SEQ.nextval FROM DUAL CONNECT BY LEVEL <= 10

resultTypeをBigIntegerにする

resultType="java.math.BigInteger"

DECODE関数を使ってbooleanでうけとる

なにかのフラグを、値があるかnullかというデータの持ち方になってるときの対処法
DECODE関数で、値があるときは1、ないときは0を返すようにすれば、javaはbooleanで受け取れる

SELECT DECODE(col1, '1', 1, 0) FROM table

springで、mybatisの設定ファイルを読み込む設定

SqlSessionFactoryBeanのconfigLocationで指定

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="configLocation" value="classpath:mybatis-config.xml" />
    </bean>

snake_caseのカラム名をcamelCaseのプロパティ名にマッピング

mybatisの設定ファイルに下記を記述。

<configuration>
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
</configuration>

mybatisでマッパーのメソッドの引数を複数にする

メソッドの引数に@Paramアノテーションでパラメタ名を指定

HogeMapper.java
import org.apache.ibatis.annotations.Param;

public interface HogeMapper {

    public List<ParkingKarte> find(
            @Param("name") String name, //パラメタ名を指定して、XMLでこの名前がつかえる
            @Param("bean") Bean bean);
}


XMLではparameterTypeをmapにすれば、上で決めたパラメタ名を使ってかける。Beanのプロパティもxx.yyの形で使える。

HogeMapper.xml

<select id="find" parameterType="map">
SELECT * FROM Hoge where name = #{name} AND status = #{bean.status}
</select>

MyBatisのコードを自動生成(MyBatis Generator)

DBからコード生成するためのツール。
http://www.mybatis.org/generator/

使い方

Mybatis Generatorでimmutableなクラスを生成

スネークケースのカラム名をキャメルケースのプロパティにマッピング

generatorConfig.xml

        <table tableName="*">
         <property name="useActualColumnNames" value="false"/>
    </table>

モデルクラスと対応するxmlファイルだけ生成

generatorConfig.xml

        <table tableName="*">
         <property name="modelOnly" value="true"/>
    </table>

コンストラクタで値をセット

generatorConfig.xml

 <javaModelGenerator targetPackage="hoge.modeles" targetProject="src\main\java">
        <property name="constructorBased" value="true"/>
    </javaModelGenerator>

MyBatisの事例

20
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
21