Java框架MyBatis接口編程過(guò)程解析
要求:
1.配置文件的namespace名稱空間指定為接口的全類名
2.配置文件中的id唯一標(biāo)識(shí)與接口中的方法對(duì)應(yīng)(返回值類型對(duì)應(yīng),方法名對(duì)應(yīng),參數(shù)個(gè)數(shù)和類型對(duì)應(yīng))
接口代碼:
package com.bird.mybatis.dao; import com.bird.mybatis.bean.Employee; public interface EmployeeMapper { public Employee getEmpById(Integer id); }
對(duì)應(yīng)配置文件代碼:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace:名稱空間(若使用接口式編程,與EmployeeMapper接口全類名一致) id:唯一標(biāo)識(shí)(與接口中的方法名對(duì)應(yīng)) resultType:返回值類型(與對(duì)應(yīng)方法的返回值對(duì)應(yīng)) #{id}:從傳遞過(guò)來(lái)的參數(shù)中取出id值 --> <mapper namespace="com.bird.mybatis.dao.EmployeeMapper"> <select id="getEmpById" resultType="com.bird.mybatis.bean.Employee"> select id,last_name lastName,gender,email from tbl_employee where id = #{id} </select> </mapper>
測(cè)試代碼:
/** * MyBatis接口編程 * @throws IOException */ @Test void test2() throws IOException { //獲取sqlSessionFactory對(duì)象 SqlSessionFactory ssf = getSqlSessionFactory(); //獲取sqlSession對(duì)象 SqlSession openSession = ssf.openSession(); try { //獲取接口的實(shí)現(xiàn)類對(duì)象 EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class); Employee empById = mapper.getEmpById(1); System.out.println(empById); }finally { openSession.close(); } } /** * 獲取sqlSessionFactory對(duì)象 * @throws IOException */ public static SqlSessionFactory getSqlSessionFactory() throws IOException { String resource = "mybatis-config.xml"; InputStream is = Resources.getResourceAsStream(resource); return new SqlSessionFactoryBuilder().build(is); }
總結(jié):
1.接口編程:
原生接口: Dao ===> DaoImpl
MyBatis: Dao ===> Mapper.xml
2. SqlSession代表與數(shù)據(jù)庫(kù)的一次會(huì)話,用完要關(guān)閉
3. SqlSession和Connection都是非線程安全的,所以每次都要獲取新的對(duì)象,而不能寫(xiě)成成員變量
4.mapper接口沒(méi)有實(shí)現(xiàn)類,但是MyBatis生成代理對(duì)象
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
使用Java編寫(xiě)一個(gè)圖片word互轉(zhuǎn)工具
這篇文章主要介紹了使用Java編寫(xiě)一個(gè)PDF?Word文件轉(zhuǎn)換工具的相關(guān)資料,需要的朋友可以參考下2023-01-01Java多線程編程中synchronized關(guān)鍵字的基礎(chǔ)用法講解
Java的synchronized關(guān)鍵字用于修飾線程同步,用以線程資源共享的目的等,下面就帶來(lái)簡(jiǎn)單的Java多線程編程中synchronized關(guān)鍵字的基礎(chǔ)用法講解2016-06-06Jpa 實(shí)現(xiàn)自動(dòng)更新表中的創(chuàng)建日期和修改時(shí)間
這篇文章主要介紹了Jpa 實(shí)現(xiàn)自動(dòng)更新表中的創(chuàng)建日期和修改時(shí)間,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01Java子類實(shí)例化總是默認(rèn)調(diào)用父類的無(wú)參構(gòu)造操作
這篇文章主要介紹了Java子類實(shí)例化總是默認(rèn)調(diào)用父類的無(wú)參構(gòu)造操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10