最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring 整合 MyBatis的實(shí)現(xiàn)步驟

 更新時(shí)間:2023年02月24日 11:12:37   作者:Java Fans  
SpringMVC 本來(lái)就是 Spring 框架的一部分,這兩者無(wú)須再做整合,所以 SSM 整合的關(guān)鍵就是Spring對(duì)MyBatis的整合,三大框架整合完成后,將以 Spring 為核心,調(diào)用有關(guān)資源,高效運(yùn)作,這篇文章主要介紹了 Spring 整合 MyBatis的實(shí)現(xiàn)步驟,需要的朋友可以參考下

MyBatis 是一款常用的持久層框架,使得程序能夠以調(diào)用方法的方式執(zhí)行某個(gè)指定的SQL,將執(zhí)行SQL的底層邏輯進(jìn)行封裝。多數(shù)與Spring結(jié)合使用,本文討論Spring如何整合Mybatis。

  Spring 整合 MyBatis 可以實(shí)現(xiàn)讓數(shù)據(jù)庫(kù)連接,事務(wù)管理,實(shí)例化對(duì)象的創(chuàng)建與依賴(lài)關(guān)系等都統(tǒng)一由 Spring 負(fù)責(zé),以及數(shù)據(jù)庫(kù)的增刪改查操作由 spring-mybatis 整合包提供的 SqlSessionTemplate 對(duì)象來(lái)操作,或者利用整合包掃描接口,依據(jù) Mapper 映射文件直接創(chuàng)建代理實(shí)現(xiàn)類(lèi),無(wú)須程序員手工實(shí)現(xiàn)接口,大大簡(jiǎn)化了開(kāi)發(fā)流程。SpringMVC 本來(lái)就是 Spring 框架的一部分,這兩者無(wú)須再做整合,所以 SSM 整合的關(guān)鍵就是Spring對(duì)MyBatis的整合,三大框架整合完成后,將以 Spring 為核心,調(diào)用有關(guān)資源,高效運(yùn)作。

一、Spring 項(xiàng)目整體目錄結(jié)構(gòu)

二、Spring 整合 MyBatis 開(kāi)發(fā)環(huán)境

  Spring 整合 MyBatis 開(kāi)發(fā)環(huán)境除了需要 Spring 的jar包和 MyBatis 的jar包,還需要 SpringMyBatis 整合的中間件 mybatis-spring-xxx.jar,此外還需要數(shù)據(jù)庫(kù)驅(qū)動(dòng)jar包 mysql-connector-java-xxx.jar。

三、Mapper 接口無(wú)實(shí)現(xiàn)類(lèi)開(kāi)發(fā)整合

項(xiàng)目案例:Spring + MyBatis 實(shí)現(xiàn)對(duì) user 數(shù)據(jù)庫(kù)的查詢(xún)。

實(shí)現(xiàn)步驟:

【1】創(chuàng)建一個(gè) Maven 項(xiàng)目,然后再 pom.xml 文件中添加相關(guān)依賴(lài)

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>cn.kgc.sm</groupId>
  <artifactId>spring06</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>spring06</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <!--測(cè)試工具-->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>

    <!--mysql驅(qū)動(dòng)-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.47</version>
    </dependency>

    <!--druid-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.2.9</version>
    </dependency>

    <!--mybatis-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.9</version>
    </dependency>

    <!--IOC 依賴(lài)注入-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>5.3.9</version>
    </dependency>

    <!--mybatis&spring 整合包-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>2.0.5</version>
    </dependency>

    <!--aspects 切面-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aspects</artifactId>
      <version>5.3.9</version>
    </dependency>

    <!--jdbc-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>5.3.9</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>5.3.9</version>
    </dependency>

    <!--lombok-->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.16</version>
    </dependency>

    <!-- 日志工具-->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>

    <!--mybatis分頁(yè)插件-->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>5.2.1</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>5.3.9</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

【2】在 resources —> config 目錄下,創(chuàng)建數(shù)據(jù)庫(kù)配置文件 jdbc.properties

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///java2218?serverTimezone=UTC&useSSL=false&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=root

【3】在 resources —> config 目錄下,創(chuàng)建 MyBatis 配置文件 mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <settings>
        <setting name="logImpl" value="LOG4J"/>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
        <!--全局開(kāi)啟二級(jí)緩存-->
        <setting name="cacheEnabled" value="true"/>
    </settings>
    <!--配置mybatis分頁(yè)插件-->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <!-- 配置mysql方言 -->
            <property name="helperDialect" value="mysql" />
            <!-- 設(shè)置為true時(shí),如果pageSize=0就會(huì)查詢(xún)出全部的結(jié)果 -->
            <property name="pageSizeZero" value="true" />
            <!-- 3.3.0版本可用,分頁(yè)參數(shù)合理化,默認(rèn)false禁用 -->
            <!-- 啟用合理化時(shí),如果pageNum<1會(huì)查詢(xún)第一頁(yè),如果pageNum>pages會(huì)查詢(xún)最后一頁(yè) -->
            <!-- 禁用合理化時(shí),如果pageNum<1或pageNum>pages會(huì)返回空數(shù)據(jù) -->
            <property name="reasonable" value="true" />
        </plugin>
    </plugins>
</configuration>

【4】在 resources —> config 目錄下,創(chuàng)建 Spring 配置文件 spring-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
    
    <!--引入外部數(shù)據(jù)源的配置參數(shù)-->
    <context:property-placeholder location="classpath:config/jdbc.properties"></context:property-placeholder>

    <!--初始化數(shù)據(jù)庫(kù)連接池-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}"></property>
        <property name="url" value="${jdbc.url}"></property>
        <property name="username" value="${jdbc.username}"></property>
        <property name="password" value="${jdbc.password}"></property>
    </bean>

    <!--sqlSessionFactory-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--設(shè)置數(shù)據(jù)庫(kù)連接池-->
        <property name="dataSource" ref="dataSource"></property>
        <!--設(shè)置mybatis全局配置文件位置-->
        <property name="configLocation" value="config/mybatis-config.xml"></property>
        <!--設(shè)置別名的包-->
        <property name="typeAliasesPackage" value="cn.kgc.sm"></property>
        <!--設(shè)置mapper.xml文件的位置-->
        <property name="mapperLocations" value="mapper/*.xml"></property>
    </bean>

    <!--mapper接口掃描  生成接口代理對(duì)象 同時(shí)完成對(duì)象的托管-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="cn.kgc.sm.mapper"></property>
    </bean>

    <!--開(kāi)啟包掃描  base-package  設(shè)置需要掃描的包 -->
    <context:component-scan base-package="cn.kgc.sm"></context:component-scan>
</beans>

【5】創(chuàng)建實(shí)體類(lèi) User

package cn.kgc.sm.entity;

import lombok.Data;

@Data
public class User {

  private Integer uId;
  private String uName;
  private String uPassword;
  private Integer uState;

}

【6】創(chuàng)建 Mapper 接口 UserMapper

package cn.kgc.sm.mapper;

import cn.kgc.sm.entity.User;

import java.util.List;

public interface UserMapper {
    List<User> selectAll();
}

【7】創(chuàng)建與 UserMapper 接口映射的 UserMapper.xml 文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.kgc.sm.mapper.UserMapper">

  <select id="selectAll" resultType="user">
    select * from user
  </select>
</mapper>

【8】創(chuàng)建 Service 業(yè)務(wù)層接口 UserService

package cn.kgc.sm.service;

import cn.kgc.sm.entity.User;
import cn.kgc.sm.mapper.UserMapper;

import java.util.List;

public interface UserService {
    List<User> selectAll();
}

【9】創(chuàng)建 UserService 接口的實(shí)現(xiàn)類(lèi) UserServiceImpl

package cn.kgc.sm.service.impl;

import cn.kgc.sm.entity.User;
import cn.kgc.sm.mapper.UserMapper;
import cn.kgc.sm.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    UserMapper userMapper;


    @Override
    public List<User> selectAll() {
        System.out.println("users = ");
        List<User> users = userMapper.selectAll();

        System.out.println("users = " + users);
        return users;
    }
}

【10】創(chuàng)建測(cè)試類(lèi)

package cn.kgc.sm.mapper;

import cn.kgc.sm.entity.User;
import cn.kgc.sm.service.UserService;
import junit.framework.TestCase;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:config/spring-config.xml")
public class UserMapperTest {
    @Autowired
    UserService userService;

    @Test
    public void Test01(){
        List<User> users = userService.selectAll();
        users.forEach(user -> System.out.println("user = " + user));
//        for (User user : users) {
//            System.out.println("user = " + user);
//        }
    }

}

運(yùn)行結(jié)果:

到此這篇關(guān)于 Spring 整合 MyBatis的文章就介紹到這了,更多相關(guān) Spring 整合 MyBatis內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解JAVA 線(xiàn)程-線(xiàn)程的狀態(tài)有哪些?它是如何工作的?

    詳解JAVA 線(xiàn)程-線(xiàn)程的狀態(tài)有哪些?它是如何工作的?

    這篇文章主要介紹了詳解JAVA 線(xiàn)程的的相關(guān)資料,文中講解非常細(xì)致,源碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以參考下
    2020-06-06
  • java內(nèi)部測(cè)試類(lèi)代碼詳解

    java內(nèi)部測(cè)試類(lèi)代碼詳解

    這篇文章主要介紹了java內(nèi)部測(cè)試類(lèi)代碼詳解,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • 淺談Spring中幾個(gè)PostProcessor的區(qū)別與聯(lián)系

    淺談Spring中幾個(gè)PostProcessor的區(qū)別與聯(lián)系

    這篇文章主要介紹了淺談Spring中幾個(gè)PostProcessor的區(qū)別與聯(lián)系,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java中十六進(jìn)制和十進(jìn)制之間互相轉(zhuǎn)換代碼示例

    Java中十六進(jìn)制和十進(jìn)制之間互相轉(zhuǎn)換代碼示例

    這篇文章主要給大家介紹了關(guān)于Java中十六進(jìn)制和十進(jìn)制之間互相轉(zhuǎn)換的相關(guān)資料,我們項(xiàng)目過(guò)程中總是要用到十進(jìn)制與十六進(jìn)制相互轉(zhuǎn)換的方法,需要的朋友可以參考下
    2023-07-07
  • Java匿名內(nèi)部類(lèi)的使用方法舉例詳解

    Java匿名內(nèi)部類(lèi)的使用方法舉例詳解

    Java中的匿名內(nèi)部類(lèi)是一種沒(méi)有名字的局部?jī)?nèi)部類(lèi),主要用于一次性實(shí)現(xiàn)接口或繼承類(lèi)的場(chǎng)合,它們常見(jiàn)于GUI事件處理、多線(xiàn)程編程等場(chǎng)景,簡(jiǎn)化代碼結(jié)構(gòu)同時(shí)提高開(kāi)發(fā)效率,需要的朋友可以參考下
    2024-09-09
  • java網(wǎng)上圖書(shū)商城(1)User模塊

    java網(wǎng)上圖書(shū)商城(1)User模塊

    這篇文章主要介紹了java網(wǎng)上圖書(shū)商城,User模塊,實(shí)現(xiàn)用戶(hù)注冊(cè)功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • java TreeUtil菜單遞歸工具類(lèi)

    java TreeUtil菜單遞歸工具類(lèi)

    這篇文章主要為大家詳細(xì)介紹了java TreeUtil菜單遞歸工具類(lèi),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • SpringBoot源碼分析之bootstrap.properties文件加載的原理

    SpringBoot源碼分析之bootstrap.properties文件加載的原理

    本文通過(guò)訪(fǎng)問(wèn)看到bootstrap.properties中的信息獲取到了,同時(shí)age也被application.properties中的屬性覆蓋掉了。加載順序到底是什么?為什么會(huì)覆蓋呢?我們接下來(lái)分析下吧
    2021-12-12
  • Java的位圖和布隆過(guò)濾器深入詳細(xì)講解

    Java的位圖和布隆過(guò)濾器深入詳細(xì)講解

    這篇文章主要介紹了Java的位圖和布隆過(guò)濾器,在學(xué)習(xí)之前的數(shù)據(jù)結(jié)構(gòu)的時(shí)候,我們使用的數(shù)據(jù)量都不是很大,但是在生活中,我們常常面臨著要處理大量數(shù)據(jù)結(jié)果并得出最終結(jié)果,那么有沒(méi)有什么數(shù)據(jù)結(jié)構(gòu)可以幫助我們實(shí)現(xiàn)這樣的功能呢,想要繼續(xù)了解的朋友可以參考下
    2024-10-10
  • IDEA中多行注釋及取消注釋的快捷鍵分享

    IDEA中多行注釋及取消注釋的快捷鍵分享

    這篇文章主要介紹了IDEA中多行注釋及取消注釋的快捷鍵分享,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02

最新評(píng)論

新乡县| 平度市| 金川县| 阿巴嘎旗| 边坝县| 南平市| 长兴县| 铅山县| 会同县| 黑龙江省| 凌源市| 泰来县| 宜良县| 汽车| 远安县| 开远市| 县级市| 徐州市| 桃江县| 百色市| 张家界市| 博兴县| 凤阳县| 上饶县| 潼南县| 扎兰屯市| 南木林县| 台中县| 福泉市| 泽州县| 连云港市| 崇文区| 福鼎市| 鹿邑县| 南和县| 溧阳市| 正宁县| 桐城市| 来凤县| 武胜县| 将乐县|