1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        最新Spring整合MyBatis詳解教程

        共 5213字,需瀏覽 11分鐘

         ·

        2020-11-26 21:58

        點(diǎn)擊上方“程序IT圈”,選擇“設(shè)為星標(biāo)
        第一時(shí)間關(guān)注技術(shù)干貨!

        ?一起學(xué)習(xí)、成長(zhǎng)、溫情的熱愛生活???


        作者:Baret H ~
        地址:http://i8n.cn/e4aXqM

        首先新建一個(gè)空的maven項(xiàng)目

        1、導(dǎo)入相關(guān)jar包

        1. junit


        ????junit
        ????junit
        ????4.13
        ????test

        2. mybatis


        ????org.mybatis
        ????mybatis
        ????3.5.5

        3. mysql


        ????mysql
        ????mysql-connector-java
        ????8.0.21

        4. spring相關(guān)


        ????org.springframework
        ????spring-webmvc
        ????5.2.8.RELEASE



        ????org.springframework
        ????spring-jdbc
        ????5.1.3.RELEASE

        5. aop織入


        ????org.aspectj
        ????aspectjweaver
        ????1.9.4

        6. mybatis-spring


        ????org.mybatis
        ????mybatis-spring
        ????2.0.5

        7. lombok(選用)


        ????org.projectlombok
        ????lombok
        ????1.18.12

        最后為了防止maven配置文件無法被導(dǎo)出或生效,加入以下代碼



        ????
        ????????
        ????????????src/main/resources
        ????????????
        ????????????????**/*.properties
        ????????????????**/*.xml
        ????????????

        ????????????true
        ????????

        ????????
        ????????????src/main/java
        ????????????
        ????????????????**/*.properties
        ????????????????**/*.xml
        ????????????

        ????????????true
        ????????

        ????


        2、回顧:建立一個(gè)Mybatis程序

        1. IDEA連接數(shù)據(jù)庫(kù)

        大家連接自己的數(shù)據(jù)庫(kù)即可,這里的實(shí)驗(yàn)表格為

        2. 編寫MyBatis核心配置文件


        "1.0"?encoding="UTF-8"??>
        ????????PUBLIC?"-//mybatis.org//DTD?Config?3.0//EN"
        ????????"http://mybatis.org/dtd/mybatis-3-config.dtd">

        ????default="development">
        ????????"development">
        ????????????"JDBC"/>
        ????????????"POOLED">
        ????????????????"driver"?value="com.mysql.jdbc.Driver"/>
        ????????????????"url"?value="jdbc:mysql://localhost:3306/mybatis?useSSH=true&useUnicode=true&characterEncoding=UTF-8"/>
        ????????????????"username"?value="root"/>
        ????????????????"password"?value="200024"/>
        ????????????
        ????????
        ????

        3. 創(chuàng)建數(shù)據(jù)庫(kù)表對(duì)應(yīng)實(shí)體類


        package?pojo;

        import?lombok.Data;

        @Data
        public?class?User?{
        ????private?int?id;
        ????private?String?name;
        ????private?String?pwd;
        }

        4. 編寫Mapper接口


        package?mapper;

        import?pojo.User;

        import?java.util.List;

        public?interface?UserMapper?{
        ????public?List?getUser();
        }

        5. 編寫Mapper.xml配置文件


        "1.0"?encoding="UTF-8"??>
        ????????PUBLIC?"-//mybatis.org//DTD?Config?3.0//EN"
        ????????"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
        "mapper.UserMapper">
        ????"getUser"?resultType="pojo.User">
        ????????select?*?from?mybatis.user
        ????

        6. 編寫測(cè)試類


        public?class?Test?{
        ????@org.junit.Test
        ????public?void?test()?throws?IOException?
        {
        ????????String?resource?=?"mybatis-config.xml";
        ????????InputStream?in?=?Resources.getResourceAsStream(resource);
        ????????SqlSessionFactory?sessionFactory?=?new?SqlSessionFactoryBuilder().build(in);
        ????????SqlSession?sqlSession?=?sessionFactory.openSession(true);
        ????????UserMapper?mapper?=?sqlSession.getMapper(UserMapper.class);
        ????????List?users?=?mapper.getUser();
        ????????for?(User?user?:?users)?{
        ????????????System.out.println(user);
        ????????}
        ????}
        }

        7. 給Mapper.xml添加注冊(cè)

        在核心配置文件mybatis-config.xml中加入以下代碼


        ????class="mapper.UserMapper"/>

        8. 測(cè)試運(yùn)行


        到此,mybatis程序的創(chuàng)建已成功,接下來將進(jìn)行修改,整合spring


        3、spring整合:方式一

        通過SqlSessionTemplate創(chuàng)建SqlSession

        接下來將在上述實(shí)驗(yàn)環(huán)境下進(jìn)行修改

        1. 引入spring配置文件

        resource目錄下新建spring-dao.xml


        "1.0"?encoding="UTF-8"?>
        "http://www.springframework.org/schema/beans"
        ???????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        ???????xmlns:aop="http://www.springframework.org/schema/aop"
        ???????xsi:schemaLocation="http://www.springframework.org/schema/beans
        ????????https://www.springframework.org/schema/beans/spring-beans.xsd"
        >


        2. 使用Spring的數(shù)據(jù)源替換MyBatis的數(shù)據(jù)源配置

        在spring配置文件中加入以下代碼,配置數(shù)據(jù)源信息


        "dataSource"?class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        ????"driverClassName"?value="com.mysql.cj.jdbc.Driver"/>
        ????"url"
        ??????????????value="jdbc:mysql://localhost:3306/mybatis?useSSH=true&useUnicode=true&characterEncoding=UTF-8"/>
        ????"username"?value="root"/>
        ????"password"?value="200024"/>

        此時(shí),就可以刪除mybatis核心配置文件mybatis-config.xml中的數(shù)據(jù)源配置

        3. 通過spring創(chuàng)建sqlSessionFactory

        • MyBatis 中,是通過 SqlSessionFactoryBuilder 來創(chuàng)建 SqlSessionFactory

        • 而在 MyBatis-Spring 中,則使用 SqlSessionFactoryBean 來創(chuàng)建

        spring配置文件中加入以下代碼,創(chuàng)建sqlSessionFactory


        "sqlSessionFactory"?class="org.mybatis.spring.SqlSessionFactoryBean">
        ????"dataSource"?ref="dataSource"/>

        唯一的必要屬性:用于 JDBC 的 DataSource,注入上述創(chuàng)建好的數(shù)據(jù)源

        還可以配置其他屬性,完全取代mybatis-config.xml中的配置


        這里加入兩個(gè)屬性配置:
        • configLocation:指定mybatis的xml配置文件路徑

        • mapperLocations:注冊(cè)Mapper.xm映射器


        "sqlSessionFactory"?class="org.mybatis.spring.SqlSessionFactoryBean">
        ????"dataSource"?ref="dataSource"/>
        ????
        ????"configLocation"?value="classpath:mybatis-config.xml"/>
        ????
        ????"mapperLocations"?value="classpath:mapper/*.xml"/>

        這里,我們?cè)?code style="font-size: inherit;line-height: inherit;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;color: rgb(233, 105, 0);background: rgb(248, 248, 248);">spring配置文件中注冊(cè)了Mapper.xml,就可以刪除mybatis-config.xml中的Mapper.xml的注冊(cè)

        4. 創(chuàng)建sqlSession對(duì)象

        • mybatis中,SqlSession 提供了在數(shù)據(jù)庫(kù)執(zhí)行 SQL 命令所需的所有方法

        • 而在spring-mybatis,沒有SqlSession了,而是SqlSessionTemplate,這兩個(gè)是同一個(gè)東西

        spring配置文件中加入以下代碼,創(chuàng)建sqlSession

        • 這里使用上述創(chuàng)建好的sqlSessionFactory 作為構(gòu)造方法的參數(shù)來創(chuàng)建 SqlSessionTemplate 對(duì)象。


        "sqlSession"?class="org.mybatis.spring.SqlSessionTemplate">
        ????
        ????"0"?ref="sqlSessionFactory"/>

        5. 新建接口實(shí)現(xiàn)類

        上一步我們創(chuàng)建了sqlSession對(duì)象,此時(shí)需要?jiǎng)?chuàng)建一個(gè)類來使用sqlSession


        在該類中添加一個(gè) SqlSession 屬性,并添加 set方法 用于后續(xù)sqlSession的注入

        public?class?UserMapperImpl?implements?UserMapper?{
        ????//原來所有操作都通過SqlSession來執(zhí)行,現(xiàn)在都是SqlSessionTemplate
        ????private?SqlSessionTemplate?sqlSession;

        ????public?void?setSqlSession(SqlSessionTemplate?sqlSession)?{
        ????????this.sqlSession?=?sqlSession;
        ????}

        ????public?List?getUser()?{
        ????????UserMapper?mapper?=?sqlSession.getMapper(UserMapper.class);
        ????????return?mapper.getUser();
        ????}
        }

        6. 創(chuàng)建實(shí)現(xiàn)類對(duì)象

        利用spring創(chuàng)建上述接口實(shí)現(xiàn)類對(duì)象,取名為userMapper,并注入上述創(chuàng)建好的sqlSession對(duì)象

        "userMapper"?class="mapper.UserMapperImpl">
        ????"sqlSession"?ref="sqlSession"/>

        7. 修改測(cè)試類

        此時(shí),無需像先前一樣創(chuàng)建sqlSessionFactory和sqlSession,我們只需獲得創(chuàng)建好的``實(shí)體類對(duì)象```UserMapper,然后調(diào)用該對(duì)象的方法即可

        public?class?Test?{
        ????@org.junit.Test
        ????public?void?test()?throws?IOException?
        {
        ????????ApplicationContext?context?=?new?ClassPathXmlApplicationContext("spring-dao.xml");
        ????????UserMapperImpl?userMapper?=?(UserMapperImpl)?context.getBean("userMapper");
        ????????List?users?=?userMapper.getUser();
        ????????for?(User?user?:?users)?{
        ????????????System.out.println(user);
        ????????}
        ????}
        }

        8. 運(yùn)行測(cè)試


        運(yùn)行成功?。?!


        4、spring整合:方式二

        通過SqlSessionDaoSupport獲得Sqlsession

        接下來將在上述實(shí)驗(yàn)環(huán)境下進(jìn)行修改

        1. 新建接口實(shí)現(xiàn)類

        新建一個(gè)接口實(shí)現(xiàn)類,繼承SqlSessionDaoSupport類,直接可以獲得SqlSession對(duì)象


        public?class?UserMapperImpl2?extends?SqlSessionDaoSupport?implements?UserMapper?{
        ????public?List?getUser()?{
        ????????SqlSession?sqlSession?=?getSqlSession();
        ????????UserMapper?mapper?=?sqlSession.getMapper(UserMapper.class);
        ????????return?mapper.getUser();
        ????}
        }

        2. 創(chuàng)建接口實(shí)現(xiàn)類對(duì)象

        通過Spring來創(chuàng)建

        spring配置文件中創(chuàng)建上述實(shí)體類對(duì)象userMapper2,并設(shè)置sqlSessionFactory屬性為上述創(chuàng)建好的sqlSessionFactory

        "userMapper2"?class="mapper.UserMapperImpl2">
        ????"sqlSessionFactory"?ref="sqlSessionFactory"/>

        3. 修改測(cè)試類

        同樣,無需像先前一樣創(chuàng)建sqlSessionFactorysqlSession,我們只需獲得創(chuàng)建好的實(shí)體類對(duì)象UserMapper2,然后調(diào)用該對(duì)象的方法即可

        public?class?Test?{
        ????@org.junit.Test
        ????public?void?test()?throws?IOException?
        {
        ????????ApplicationContext?context?=?new?ClassPathXmlApplicationContext("spring-dao.xml");
        ????????UserMapperImpl2?userMapper?=?(UserMapperImpl2)?context.getBean("userMapper2");
        ????????List?users?=?userMapper.getUser();
        ????????for?(User?user?:?users)?{
        ????????????System.out.println(user);
        ????????}
        ????}
        }

        4. 測(cè)試運(yùn)行

        成功運(yùn)行!!

        所有巧合的是要么是上天注定要么是一個(gè)人偷偷的在努力。
        結(jié)束!

        【推薦閱讀

        Java代碼中 : : 是什么語(yǔ)法?
        一款基于 SpringCloud 開源的商城系統(tǒng)(附源碼)
        3個(gè)開源的快速開發(fā)平臺(tái),前后端都有!
        Java 如何精確統(tǒng)計(jì)頁(yè)面停留時(shí)長(zhǎng)?
        SpringBoot 如何上傳大文件?
        福利:公眾號(hào)點(diǎn)擊關(guān)注“Java”,可以免費(fèi)領(lǐng)取全套Java學(xué)習(xí)資料】,更多驚喜等你去發(fā)現(xiàn)~
        萬水千山總是情,點(diǎn)個(gè) “
        ” 行不行
        瀏覽 58
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            亚洲小电影 | 亚洲无码视频在线看 | 91干干 | 日本边添边摸边做边爱有限公司 | 青青草原精品99久久精品66 | 久久99精品国产.久久久久久 | 大香蕉伊人在线网 | 搡bbbb搡bbb视频 | 久久99精品久久久久久园产越南 | 精品国产久 |