大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

面試題首頁 > Mybaits面試題

Mapper面試題

001使用 MyBatis 的 mapper 接口調用時有哪些要求?

1.Mapper接口方法名和mapper.xml中定義的每個sql的id相同;
2.Mapper接口方法的輸入參數類型和mapper.xml中定義的每個sql的parameterType的類型相同;
3.Mapper接口方法的輸出參數類型和mapper.xml中定義的每個sql的resultType的類型相同;
4.Mapper.xml文件中的namespace即是mapper接口的類路徑;

002當實體類中的屬性名和表中的字段名不一樣 ,怎么辦 ?

第一種:通過定義select語句中字段名的別名,讓字段明的別名和實體類的屬性名一致
第二種:通過ResutlMap來映射字段名和實體類屬性名的一一對應的關系。

003模糊查詢 like 語句該怎么寫?

第 1 種:在 Java 代碼中添加 sql 通配符。
<select id="selectlike">
? select * from foo where bar like #{value}
</select>
第 2 種:在 sql 語句中拼接通配符,會引起 sql 注入
<select id="selectlike">
? select * from foo where bar like "%"#{value}"%"
</select>

004MyBatis動態sql是做什么的?都有哪些動態sql?能簡述一下動態sql的執行原理不?

1)MyBatis動態sql可以讓我們在Xml映射文件內,以標簽的形式編寫動態sql,完成邏輯判斷和動態拼接sql的功能,MyBatis提供了9種動態sql標簽 trim | where | set | foreach | if | choose | when | otherwise | bind。
2)其執行原理為,使用OGNL從sql參數對象中計算表達式的值,根據表達式的值動態拼接sql,以此來完成動態sql的功能。

005這個Dao接口的工作原理是什么?Dao接口里的方法,參數不同時,方法能重載嗎?

Dao接口的工作原理是JDK動態代理,Mybatis運行時會使用JDK動態代理為Dao接口生成代理proxy對象,代理對象proxy會攔 截接口方法,轉而執行MappedStatement所代表的sql,然后將sql執行結果返回。
Dao接口里的方法,是不能重載的,因為是全限名+方法名的保存和尋找策略。

006一對一、一對多的關聯查詢 ?

MyBatis實現一對一、一對多關聯查詢一般有兩種方式:
方式一:sqlMapper配置文件
一對一:在resultMap標簽中使用 association 標簽
一對多:在resultMap 標簽中使用collection 標簽
方式二:注解
一對一:在@Results 注解中的@Result注解中使用@One注解
一對多:在@Results 注解中的@Result 注解中使用@Many注解

007Mybatis 單條插入,如何返回主鍵?

useGeneratedKeys為true,持自動生成主鍵,keyProperty和keyColumn分別代表數據庫記錄主鍵字段和java對象成員屬性名
dao層 修飾符 為 void,不需要返回任何

<insert id="insertEntity" parameterType="**" useGeneratedKeys="true" keyProperty="id" keyColumn="id">

008Mybatis 批量插入,如何返回主鍵?

//dao層 修飾符 為 void,不需要返回任何
void batchInsert(List<TAlarmChannelEntity> list);
<insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id" >
    INSERT INTO  t_alarm_channel
    (channel, silent_cycle, aggregation_mode,threshold,effective_start_time,effective_end_time,inform_obj,selected,create_time)
    VALUES
    <foreach collection="list" index="index" item="bo" separator=",">
       (
          #{bo.channel}, #{bo.silentCycle}, #{bo.aggregationMode},#{bo.threshold},#{bo.effectiveStartTime},#{bo.effectiveEndTime},#{bo.informObj},#{bo.selected},now()
       )
    </foreach>
</insert>

009ResultMap和ResultType的區別?

ResultMap是??指定返回值與對象及與對象內部屬性名和數據庫列名的綁定
ResultType是直接返回值與別名庫當中的java對象的映射

010在mapper中如何傳遞多個參數?

1,第一種:
public UserselectUser(String name,String area); 對應的 xml,#{0}代表接收的是 dao 層中的第一個參數,#{1}代表 dao 層中第二 參數,更多參數一致往后加即可。

<select id="selectUser"resultMap="BaseResultMap">
? select * from user_user_t where user_name = #{0} and user_area=#{1}
</select>

2,第二種:使用@param注解:

public interface UserMapper {
? ? User selectUser(@param("username") String username,
? ? ? ? ? ? ? ? ? ? @param("hashedpassword") sString hashedpassword);
}

然后,就可以在 xml 像下面這樣使用(推薦封裝為一個 map,作為單個參數傳遞給mapper):

<select id="selectuser" resulttype="user">
? select id, username, hashedpassword
? from some_table
? where username = #{username} and hashedpassword = #{hashedpassword}
</select>

3、第三種:多個參數封裝成 map

try {
? ? //映射文件的命名空間.SQL 片段的 ID,就可以調用對應的映射文件中的SQL
? ? //由于我們的參數超過了兩個,而方法中只有一個 Object 參數收集,因此我們使用 ? ? Map 集合來裝載我們的參數
? ? Map < String, Object > map = new HashMap();
? ? map.put("start", start);
? ? map.put("end", end);
? ? return sqlSession.selectList("StudentID.pagination", map);
} catch (Exception e) {
? ? e.printStackTrace();
? ? sqlSession.rollback();
? ? throw e;
} finally {
? ? MybatisUtil.closeSqlSession();
}

目錄

返回頂部
主站蜘蛛池模板: 久草在线中文最新视频 | 日韩欧美国产成人 | 亚洲精品乱码久久久久久蜜桃 | 高清不卡免费一区二区三区 | 免费爽视频 | 看真人一级毛片 | 五月四房 | 亚洲国产精品久久精品成人 | 天天干精品| 国产香蕉75在线播放 | 日韩午夜在线视频 | 亚洲精品久久久久中文字小说 | 国产亚洲漂亮白嫩美女在线 | 久久国内精品自在自线观看 | 国产精品一区久久精品 | 亚洲国产精品一区二区久久hs | 久久综合噜噜激激的五月天 | 国产精久久一区二区三区 | 美利坚永久精品视频在线观看 | 亚洲精品第一国产麻豆 | 天天躁日日躁成人字幕aⅴ 天天躁日日躁狠狠躁黑人躁 | 中文字幕一区在线观看 | 国产美女a做受大片在线观看 | 中文字幕一区二区三区免费看 | 吃奶japanesevideo| 日韩精品亚洲一级在线观看 | 欧美艹逼视频 | 四虎永久免费在线观看 | 国产精品九九九久久九九 | 婷婷激情亚洲 | 国产在线成人精品 | 一本大道香蕉大在线最新 | 欧美亚洲高清日韩成人 | 亚洲情区 | 国产全黄a一级毛片 | 色费女人18毛片a级视频在线 | 咪咪色网 | 97影院理论片在线观看 | 九九九热精品 | 欧美国产精品不卡在线观看 | 一级一级毛片看看 |