Java框架MyBatis接口編程過程解析
要求:
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}:從傳遞過來的參數(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ì)象,而不能寫成成員變量
4.mapper接口沒有實(shí)現(xiàn)類,但是MyBatis生成代理對(duì)象
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
shiro并發(fā)人數(shù)登錄控制的實(shí)現(xiàn)代碼
在做項(xiàng)目中遇到這樣的需求要求每個(gè)賬戶同時(shí)只能有一個(gè)人登錄或幾個(gè)人同時(shí)登錄,如果是同時(shí)登錄的多人,要么不讓后者登錄,要么踢出前者登錄,怎么實(shí)現(xiàn)這樣的功能呢?下面小編給大家?guī)砹藄hiro并發(fā)人數(shù)登錄控制的實(shí)現(xiàn)代碼,一起看看吧2017-09-09
Java增強(qiáng)for循環(huán)的增刪操作代碼
Foreach循環(huán)(Foreach loop)是計(jì)算機(jī)編程語言中的一種控制流程語句,通常用來循環(huán)遍歷數(shù)組或集合中的元素,本文通過實(shí)例演示普通for循環(huán)和foreach循環(huán)使用,java增強(qiáng)for循環(huán)的操作代碼感興趣的朋友一起看看吧2024-02-02
SpringMVC @ResponseBody 415錯(cuò)誤處理方式
這篇文章主要介紹了SpringMVC @ResponseBody 415錯(cuò)誤處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11
spring boot 注入 property的三種方式(推薦)
這篇文章主要介紹了spring boot 注入 property的三種方式,需要的朋友可以參考下2017-07-07
詳解Spring Boot 使用Java代碼創(chuàng)建Bean并注冊(cè)到Spring中
本篇介紹了Spring Boot 使用Java代碼創(chuàng)建Bean并注冊(cè)到Spring中,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-02-02
如何讀取properties或yml文件數(shù)據(jù)并匹配
這篇文章主要介紹了如何讀取properties或yml文件數(shù)據(jù)并匹配方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
全網(wǎng)最深分析SpringBoot MVC自動(dòng)配置失效的原因
這篇文章主要介紹了全網(wǎng)最深分析SpringBoot MVC自動(dòng)配置失效的原因,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07

