Mybatisエージェントインタフェース

7874 ワード

mybatisの#と$の違いを整理します.
#{}         ,      ,              。   JDBC     (?)。
    ,    :(  oracle):
and username like concat(concat('%',#{username}),'%')
concat              ,          。
  $       ,    $              (        ,         ),       SQL     。
and username like concat(concat('%',${value    }),'%')

  #    JDBC     (?),              。                           。     。    SQL  。
  $       JDBC       。                (            ,     )

動的SQL動的SQLを使用する目的は、SQL文にデータの判断を加えることです.入力されたデータに基づいてSQL文を作成します.動的SQL文の例:一部のデータを挿入し、プライマリ・キー値またはID(動的SQL):挿入したプライマリ・キー列を取得します.一般的には、oracleのシーケンスによって自増されるカラムを含むデータベースに対して自増されます.挿入時に属性を設定する必要があります.
    <insert id="insertItem" parameterType="Company" keyColumn="COMPANYID"
        keyProperty="companyid" useGeneratedKeys="true">
        
        
        <trim prefix="insert into company(companyid," suffixOverrides=",">
            <if test="companyname!=null and companyname!=''">
                companyname,
            if>
            <if test="address!=null and address!=''">
                address,
            if>
        trim>
        <trim prefix=") values(companyask.nextval," suffixOverrides="," suffix=")">
            <if test="companyname!=null and companyname!=''">
                #{companyname},
            if>
            <if test="address!=null and address!=''">
                #{address},
            if>
        trim>
    insert>

mybatisは私たちにデータの削除と検索のインタフェースを提供してくれたので、mybatisが提供してくれたインタフェースを私たちがカスタマイズした方法と統合しました.エージェントモード開発Mapperインタフェース開発,すべてのmybatisの開発はmapperインタフェースエージェントを採用している.まず、一般的なdaoレイヤ操作インタフェースを定義します.
public interface IDaoHotel {
    int insertItem(T t);
    T getmodel(Object id);
    int updateItem(T t);
    int deleteItem(Object id);
    List getlist(T t);
}

あるテーブルに対する添削改ざんを実現する実現インタフェース(Mapperインタフェース):
public interface UserInfoMapper extends IDaoHotel<UserInfo> {}

SQLファイルを構成します.namespaceに注意してください.このnamespaceは、実装されたインタフェースの限定名と一致する必要があります.



<mapper namespace="com.jinglin.hotelsup.dao.imp.UserInfoMapper">
    <insert id="insertItem" keyColumn="userid" keyProperty="userid" useGeneratedKeys="true"  parameterType="UserInfo">
       insert into userinfo(userid,username,userpwd,card,job)
       values(userseq.nextval,#{username},#{userpwd},#{card},#{job})
    insert>
mapper>

このmapperエージェントインタフェースの作成に成功しましたか?
@Test
    public void testit(){
        SqlSession sqlSession = sessionFactory.openSession();
        //     
        UserInfoMapper userInfoMapper = sqlSession.getMapper(UserInfoMapper.class);
        UserInfo userinfo = new UserInfo();
        userinfo.setCard("222");
        userinfo.setJob("softer1");
        userinfo.setUsername("zhangsan51");
        userinfo.setUserpwd("678");
        int result= userInfoMapper.insertItem(userinfo);
        sqlSession.commit();
        sqlSession.close();
        System.out.println("      :"+result);
        System.out.println("       :"+userinfo.getUserid());
    }