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

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 SpringBoot整合Mybatis

SpringBoot整合Mybatis

更新時間:2021-06-24 16:27:26 來源:動力節點 瀏覽1125次

之前搭傳統的ssm框架,配置文件很多,看了幾天文檔才把那些xml的邏輯關系搞得七七八八,搭起來也是很麻煩,那時我完全按網上那個demo的版本要求(jdk和tomcat),所以最后是各種問題沒成功跑起來。今天嘗試用springboot框架來整合,不敢相信才失敗幾次就成功了!!

現在來記錄一下過程:

添加POM依賴:

<dependency>  
            <groupId>org.springframework.boot</groupId>  
            <artifactId>spring-boot-starter-thymeleaf</artifactId>  
    </dependency> 
        
    <dependency>  
            <groupId>mysql</groupId>  
            <artifactId>mysql-connector-java</artifactId>  
    </dependency>  
        
    <dependency>  
            <groupId>org.mybatis.spring.boot</groupId>  
            <artifactId>mybatis-spring-boot-starter</artifactId>  
            <version>1.3.0</version>  
    </dependency>

關于dao層的依賴就是后面兩個mysql的connector和mybatis的starter(這個可是好東西)

開始寫代碼:

這里我們有個簡單是數據表:

springboot整合mybatis

我們的目的是用get發一個帶有id值的請求,服務器根據id值返回這個圖書管理員的全部信息并用json的方式直接顯示在頁面上,

Controller:

@RestController
public class LibrarianController {
    
    @Autowired
    private LibrarianService librarianService;
    
    @GetMapping("/getLibrarian")
    public Librarian getALibrarianInfo(int id) {
        //System.out.println("test :id: "+id);
        return librarianService.selectLibrarian(id);
    }
}

RestController是responsebody+Controller兩個注解的合體,一般就拿來直接傳json數據。為什么可以直接傳個對象過去呢?這是因為springboot內置了jackson模塊,可以在maven的依賴下看到這方面的jar包(之前我寫是按網上的教程用gson來處理的,比起來這個簡直無敵)

然后看到我們注入的sevice,下面是service

Service:

public interface LibrarianService {
    Librarian selectLibrarian(int id);
}

就是個接口

ServiceImpl:

@Service
public class LibrarianServiceImpl implements LibrarianService{
    
    @Autowired
    private LibrarianMapper librarianMapper;
    
    @Override
    public Librarian selectLibrarian(int id) {
        // TODO Auto-generated method stub
        return librarianMapper.selectLibrarian(id);
    }
}

這里記得要加 Service備注,才會被spring生成bean然后注入到controller那里去。

然后看到這里注入了個mapper

Dao:

package com.example.dao;


import org.apache.ibatis.annotations.Mapper;

import com.example.entity.Librarian;

@Mapper
public interface LibrarianMapper {
    Librarian selectLibrarian(int id);
}

這里加的 Mapper是MyBatis的備注,目的是為了讓spring能夠根據xml和這個接口動態生成這個接口的實現。如果是加 Repository,就是spring生成一個bean,自動注入service的相關引用中。

然后是Mapper的xml文件(我的MyBatis的相關sql用的是xml)

mapper.xml:

<?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">
<mapper namespace="com.example.dao.LibrarianMapper">

    <!-- 可根據自己的需求,是否要使用 -->
    <resultMap type="Librarian" id="LibrarianMap">

        <id column="id" property="id" jdbcType="INTEGER" />
        <result column="userName" property="useName" jdbcType="VARCHAR" />
        <result column="password" property="password" jdbcType="VARCHAR" />
        <result column="age" property="age" jdbcType="INTEGER" />
        <result column="position" property="position" jdbcType="VARCHAR" />
        
    </resultMap>
    
    

    <select id="selectLibrarian" parameterType="INTEGER" resultMap="LibrarianMap">
        select *
        from t_librarian 
        where 1=1
            and id = #{id,jdbcType=INTEGER}
    </select>
    
    

</mapper>

第三行的namespace很重要噢,它是指定這個xml所對應的是哪個dao(mapper)接口

resultMap是做個pojo和數據庫表的對應(這里只寫個Librarian不用寫全路徑是因為做了設置,下面會說)

select標簽的id對應的就是mapper接口中的方法名,parameterType就是傳進來的參數類型

簡單的配置與設置:

好現在講講設置,這里會想到,那些Controller啊, Service啊還有MyBatis的注解 Mapper什么的spring怎么知道在哪呢?不用像mvc那樣搞個掃描設置嗎?

是的要的,這些我們在啟動類做了簡單的設置:

package com.example.main;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;



/**
 * 指定所掃的包,會自動掃描指定包下的全部標有@Component的類,并注冊成bean,
 * 當然包括@Component下的子注解@Service,@Repository,@Controller。
 * @author 85060
 *
 */
@SpringBootApplication(scanBasePackages={"com.example.*"})
@MapperScan("com.example.dao")
public class SpringBootDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootDemoApplication.class, args);
    }
}

關于這個SpringBootApplication,它其實是好幾個注解的合體,所以可以直接在這寫掃包的設置,然后那個 MapperScan是MyBatis提供的設置注解。

然后還有點配置文件:

spring.thymeleaf.cache=false        
spring.devtools.restart.enabled=true   
spring.devtools.restart.additional-paths=src/main/java  

spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/db_library
spring.datasource.username=root
spring.datasource.password=4008

mybatis.type-aliases-package=com.example.entity
mybatis.mapperLocations=classpath:mappers/*.xml

主要有關的是第四行開始的,最后兩行一個是設置基本包(包別名)也就是為什么在mapper.xml中可以只寫一個Librarian的原因。

最后一行的很重要,是告訴系統在哪里去找mapper.xml文件。

上一個最后的效果圖:

springboot整合mybatis

再放一個項目結構圖:

springboot整合mybatis

以上就是動力節點小編介紹的"springboot整合mybatis",希望對大家有幫助,想了解更多可查看SpringBoot教程技術文檔,如有疑問,請在線咨詢,有專業老師隨時為您服務。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 国产精品手机网站 | 欧美一级视频精品观看 | 亚洲图片欧美在线 | 国产精品久久久亚洲 | 亚洲va在线va天堂va手机 | 级毛片久久久毛片精品毛片 | 久久久这里有精品999 | 3d动漫免费一区二区三区 | 狠狠激情五月综合婷婷俺 | 毛片链接| 一级毛片免费视频网站 | 成人影院高清在线观看免费网站 | 91精品国产人成网站 | 九九热这里只有 | 欧美特黄一级aa毛片 | 久久99影院网久久久久久 | 日本免费在线一区 | 国产一级在线免费观看 | 夜夜女人国产香蕉久久精品 | 国产成人久久一区二区三区 | 色姝影院免费 | 羞羞网站在线免费观看 | 国产成人午夜性a一级毛片 国产成人午夜性视频影院 国产成人系列 | 99精品国产在热久久 | 激情影院免费看 | 欧美高清在线视频在线99精品 | 国产免费观看a大片的网站 国产免费精彩视频 | 日日狠狠太爽爽 | 国内精品久久久久久麻豆 | 欧美亚洲国产精品久久久久 | 99在线视频精品 | 96精品专区国产在线观看高清 | 精品香蕉99久久久久网站 | 国产中文字幕视频 | 久久婷婷国产综合精品 | 色婷婷视频 | 亚洲国产系列一区二区三区 | 91精选国产 | 又粗又大的机巴好爽7 | 网络色综合久久 | 两性视频网站 |