Jadual Kandungan
1.整合思路
2.整合环境
3.spring配置文件
4.Mapper编写的三种方法
4.1原始dao开发(和spring整合后)
4.1.1User.xml
4.1.2 dao(实现类继承SqlSessionDaoSupport)
4.1.3配置dao
4.2.3测试程序
4.2mapper代理开发
4.2.1mapper.xml和mapper.java
4.2.2通过MapperFactoryBean创建代理对象
4.3通过MapperScannerConfigurer进行mapper扫描(建议使用)
Rumah Java javaTutorial Spring+SpringMVC+MyBatis深入学习及搭建——MyBatis和Spring整合

Spring+SpringMVC+MyBatis深入学习及搭建——MyBatis和Spring整合

Jun 26, 2017 am 09:26 AM
mybatis belajar membina pergi dalam

转载请注明出处: 

前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(八)——MyBatis查询缓存

1.整合思路

需要Spring通过单例方式管理SqlSessionFactory。

Spring和MyBatis整合生成代理对象,使用SqlSessionFactory创建SqlSession。(Spring和MyBatis整合自动完成)

持久层的mapper都需要由Spring进行管理。

2.整合环境

创建一个java工程(接近实际开发的工程结构)

jar包:

mybatis3.2.7的jar包

spring3.2.0的jar包

dbcp连接池

数据库驱动

mybatis和spring的整合包:早期ibatis和spring整合是由spring官方提供,mybatis和spring整合由mybatis提供。

3.spring配置文件

在applicationContext.xml配置sqlSessionFactory和数据源。SqlSessionFactory在mybatis和spring的整合包下。


<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans 
         
         
         
         
         
         
         
         
         "><!-- 加载配置文件 --><context:property-placeholder location="classpath:db.properties"/><!-- 数据库连接池,使用dbcp --><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"><property name="driverClassName" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/><property name="maxActive" value="10"/><property name="maxIdle" value="5"/></bean><!-- SqlSessionFactory配置 --><!-- 让Spring管理SqlSessionFactory使用mybatis和spring整合包中的 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 数据库连接池 --><property name="dataSource" ref="dataSource" /><!-- 加载mybatis的全局配置文件 --><property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml" /></bean></beans>
Salin selepas log masuk

4.Mapper编写的三种方法

4.1原始dao开发(和spring整合后)

4.1.1User.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"><!--namespace命名空间,作用就是对sql进行分类化的管理,理解为sql隔离
    注意:使用mapper代理开发时,namespace有特殊作用  --><mapper namespace="test"><!--在映射文件中配置很多sql语句  --><!--需求:通过id查询用户表的记录  --><!--id:标识映射文件中的sql,称为statement的id。将sql语句封装在mapperStatement的对象中,所有id称为Statement的id;
        parameterType:指定输入参数的类型,这里指定int型;
        #{}:表示一个占位符;
        #{id}:其中id表示接收输入的参数,参数名称就是id,如果输入参数是简单类型,#{}中的参数名可以任意,可以是value或其它名称;
        resultType:指定输出结果所映射的Java对象类型,select指定resultType表示将单条记录映射成Java对象。      --><select id="findUserById" parameterType="int" resultType="joanna.yan.po.User">select * from user where id=#{value}</select> </mapper>
Salin selepas log masuk

在SqlMapConfig.xml中加载User.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>  <!-- 
      批量别名的定义:
      package:指定包名,mybatis会自动扫描包中的pojo类,自定义别名,别名就是类名(首字母大写或小写都可以) -->  <typeAliases>  <package name="joanna.yan.po"/>  </typeAliases><mappers><mapper resource="sqlmap/User.xml"/><!-- 批量加载映射配置文件,mybatis自动扫描包下的mapper接口进行加载;
            遵循一定的规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中;
            以上规范的前提是:使用的是mapper代理方法;          --><package name="joanna.yan.mapper"/></mappers>
 </configuration>
Salin selepas log masuk

4.1.2 dao(实现类继承SqlSessionDaoSupport)


public interface UserDao {//根据id查询用户信息public User findUserById(int id) throws Exception;
}
Salin selepas log masuk

dao接口实现类需要注入SqlSessionFactory,通过spring进行注入。

这里用spring声明配置方式,配置dao的bean:让UserDaoImpl实现类继承SqlSessionDaoSupport。


public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao{

    @Overridepublic User findUserById(int id) throws Exception {//继承SqlSessionDaoSupport,通过this.getSqlSession()得到sqlSessionSqlSession sqlSession=this.getSqlSession();
        User user=sqlSession.selectOne("test.findUserById", id);return user;
    }
}
Salin selepas log masuk

4.1.3配置dao

在applicationContext.xml中配置dao。


    <!-- 方法一:原始dao接口  --><bean id="userDao" class="joanna.yan.dao.UserDaoImpl"><property name="sqlSessionFactory" ref="sqlSessionFactory" /></bean>
Salin selepas log masuk

4.1.4测试程序


public class UserDaoImplTest {private ApplicationContext applicationContext;
    
    @Beforepublic void setUp(){
        applicationContext=new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
    }
    
    @Testpublic void findUsetByIdTest() throws Exception{
        UserDao userDao=(UserDao) applicationContext.getBean("userDao");
        User user=userDao.findUserById(1);
        System.out.println(user);
    }
}
Salin selepas log masuk

4.2mapper代理开发

4.2.1mapper.xml和mapper.java


<?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命名空间,作用就是对sql进行分类化的管理,理解为sql隔离
    注意:使用mapper代理开发时,namespace有特殊作用,namespace等于mapper接口地址  --><mapper namespace="joanna.yan.mapper.UserMapper"><select id="findUserById" parameterType="int" resultType="user">select * from user where id=#{value}</select></mapper>
Salin selepas log masuk


public interface UserMapper {public User findUserById(int id) throws Exception;
}
Salin selepas log masuk

4.2.2通过MapperFactoryBean创建代理对象

在applicationContext.xml中配置mapper。


    <!-- 方法二:mapper配置
         MapperFactoryBean:根据mapper接口生成代理对象     --><bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"><property name="mapperInterface" value="joanna.yan.mapper.UserMapper" /><property name="sqlSessionFactory" ref="sqlSessionFactory" /></bean>
Salin selepas log masuk

4.2.3测试程序


public class UserMapperTest {private ApplicationContext applicationContext;
    
    @Beforepublic void setUp(){
        applicationContext=new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");
    }
    
    @Testpublic void findUsetByIdTest() throws Exception{
        UserMapper userMapper=(UserMapper) applicationContext.getBean("userMapper");
        User user=userMapper.findUserById(1);
        System.out.println(user);
    }
}
Salin selepas log masuk

此方法的问题:需要针对每个mapper进行配置,麻烦。

4.3通过MapperScannerConfigurer进行mapper扫描(建议使用)

在applicationContext.xml中配置mapper批量扫描。


    <!-- 方法三:mapper批量扫描 
          从mapper包中扫描出mapper接口,自动创建代理对象并且在spring容器中注册
          遵循规范:将mapper.java和mapper.xml映射文件名称保持一致,且在一个目录中。
         自动扫描出来的mapper的bean的id为mapper类名(首字母小写)     --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!-- 指定扫描的包名
             如果扫描多个包,每个包中间使用半角逗号分隔          --><property name="basePackage" value="joanna.yan.mapper"/><property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/></bean>
Salin selepas log masuk

此时,SqlMapConfig.xml中批量加载joanna.yan.mapper下mapper的配置就可以省略掉了。

测试程序:


@Testpublic void findUsetByIdTest() throws Exception{
        UserMapper userMapper=(UserMapper) applicationContext.getBean("userMapper");
        User user=userMapper.findUserById(1);
        System.out.println(user);
    }
Salin selepas log masuk

Atas ialah kandungan terperinci Spring+SpringMVC+MyBatis深入学习及搭建——MyBatis和Spring整合. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Penjelasan terperinci tentang fungsi Set tag dalam teg SQL dinamik MyBatis Penjelasan terperinci tentang fungsi Set tag dalam teg SQL dinamik MyBatis Feb 26, 2024 pm 07:48 PM

Tafsiran teg SQL dinamik MyBatis: Penjelasan terperinci tentang penggunaan teg Set MyBatis ialah rangka kerja lapisan kegigihan yang sangat baik Ia menyediakan banyak teg SQL dinamik dan boleh membina pernyataan operasi pangkalan data secara fleksibel. Antaranya, tag Set ialah tag yang digunakan untuk menjana klausa SET dalam kenyataan UPDATE, yang sangat biasa digunakan dalam operasi kemas kini. Artikel ini akan menerangkan secara terperinci penggunaan teg Set dalam MyBatis dan menunjukkan kefungsiannya melalui contoh kod tertentu. Apakah itu Set tag Set tag digunakan dalam MyBati

Mendedahkan daya tarikan bahasa C: Mendedahkan potensi pengaturcara Mendedahkan daya tarikan bahasa C: Mendedahkan potensi pengaturcara Feb 24, 2024 pm 11:21 PM

Pesona Pembelajaran Bahasa C: Membuka Potensi Pengaturcara Dengan perkembangan teknologi yang berterusan, pengaturcaraan komputer telah menjadi satu bidang yang telah menarik perhatian ramai. Di antara banyak bahasa pengaturcaraan, bahasa C sentiasa digemari oleh pengaturcara. Kesederhanaan, kecekapan dan aplikasinya yang luas menjadikan pembelajaran bahasa C sebagai langkah pertama untuk ramai orang memasuki bidang pengaturcaraan. Artikel ini akan membincangkan daya tarikan mempelajari bahasa C dan cara membuka kunci potensi pengaturcara dengan mempelajari bahasa C. Pertama sekali, daya tarikan mempelajari bahasa C terletak pada kesederhanaannya. Berbanding dengan bahasa pengaturcaraan lain, bahasa C

Menganalisis mekanisme caching MyBatis: bandingkan ciri dan penggunaan cache peringkat pertama dan cache peringkat kedua Menganalisis mekanisme caching MyBatis: bandingkan ciri dan penggunaan cache peringkat pertama dan cache peringkat kedua Feb 25, 2024 pm 12:30 PM

Analisis mekanisme caching MyBatis: Perbezaan dan aplikasi cache peringkat pertama dan cache peringkat kedua Dalam rangka kerja MyBatis, caching ialah ciri yang sangat penting yang boleh meningkatkan prestasi operasi pangkalan data dengan berkesan. Antaranya, cache tahap pertama dan cache tahap kedua adalah dua mekanisme caching yang biasa digunakan dalam MyBatis. Artikel ini akan menganalisis perbezaan dan aplikasi cache peringkat pertama dan cache peringkat kedua secara terperinci, dan memberikan contoh kod khusus untuk digambarkan. 1. Cache Tahap 1 Cache tahap 1 juga dipanggil cache setempat Ia didayakan secara lalai dan tidak boleh dimatikan. Cache tahap pertama ialah SqlSes

Mari belajar cara memasukkan nombor akar dalam Word bersama-sama Mari belajar cara memasukkan nombor akar dalam Word bersama-sama Mar 19, 2024 pm 08:52 PM

Semasa mengedit kandungan teks dalam Word, anda kadangkala perlu memasukkan simbol formula. Sesetengah lelaki tidak tahu cara memasukkan nombor akar dalam Word, jadi Xiaomian meminta saya untuk berkongsi dengan rakan saya tutorial tentang cara memasukkan nombor akar dalam Word. Semoga membantu kawan-kawan. Mula-mula, buka perisian Word pada komputer anda, kemudian buka fail yang ingin anda edit, dan gerakkan kursor ke lokasi yang anda perlukan untuk memasukkan tanda akar, rujuk contoh gambar di bawah. 2. Pilih [Sisipkan], dan kemudian pilih [Formula] dalam simbol. Seperti yang ditunjukkan dalam bulatan merah dalam gambar di bawah: 3. Kemudian pilih [Insert New Formula] di bawah. Seperti yang ditunjukkan dalam bulatan merah dalam gambar di bawah: 4. Pilih [Radical], dan kemudian pilih radikal yang sesuai. Seperti yang ditunjukkan dalam bulatan merah dalam gambar di bawah:

Bolehkah bangunan dibina di alam liar di Mistlock Kingdom? Bolehkah bangunan dibina di alam liar di Mistlock Kingdom? Mar 07, 2024 pm 08:28 PM

Pemain boleh mengumpul bahan yang berbeza untuk membina bangunan apabila bermain di Mistlock Kingdom Ramai pemain ingin tahu sama ada untuk membina bangunan di alam liar Bangunan tidak boleh dibina di dalam Mistlock Kingdom. . Bolehkah bangunan dibina di alam liar di Mistlock Kingdom? 1. Bangunan tidak boleh dibina di kawasan liar Kerajaan Mist Lock. 2. Bangunan mesti dibina dalam skop altar. 3. Pemain boleh meletakkan Spirit Fire Altar dengan sendirinya, tetapi apabila mereka meninggalkan julat, mereka tidak akan dapat membina bangunan. 4. Kita juga boleh terus menggali lubang di gunung sebagai rumah kita, jadi kita tidak perlu menggunakan bahan binaan. 5. Terdapat mekanisme keselesaan dalam bangunan yang dibina oleh pemain sendiri, iaitu, lebih baik dalaman, lebih tinggi keselesaan. 6. Keselesaan yang tinggi akan membawa bonus atribut kepada pemain, seperti

Ketahui fungsi utama dalam bahasa Go dari awal Ketahui fungsi utama dalam bahasa Go dari awal Mar 27, 2024 pm 05:03 PM

Tajuk: Pelajari fungsi utama dalam bahasa Go dari awal Sebagai bahasa pengaturcaraan yang mudah dan cekap, bahasa Go digemari oleh pembangun. Dalam bahasa Go, fungsi utama ialah fungsi masuk, dan setiap program Go mesti mengandungi fungsi utama sebagai titik masuk program. Artikel ini akan memperkenalkan cara mempelajari fungsi utama dalam bahasa Go dari awal dan memberikan contoh kod khusus. 1. Pertama, kita perlu memasang persekitaran pembangunan bahasa Go. Anda boleh pergi ke laman web rasmi (https://golang.org

Pemantauan masa nyata output SQL dalam konsol MyBatis Pemantauan masa nyata output SQL dalam konsol MyBatis Feb 25, 2024 pm 03:48 PM

MyBatis ialah rangka kerja lapisan ketekunan popular yang menyediakan pemetaan SQL yang mudah dan fungsi operasi pangkalan data, membolehkan pembangun berinteraksi dengan pangkalan data dengan lebih cekap. Dalam proses pembangunan sebenar, kadangkala kita perlu mencetak penyata SQL yang dilaksanakan oleh MyBatis pada konsol dalam masa nyata untuk menyahpepijat dan mengoptimumkan pertanyaan SQL dengan lebih baik. Artikel ini akan memperkenalkan cara merealisasikan pencetakan masa nyata SQL pada konsol dalam MyBatis dan memberikan contoh kod khusus. Pertama, kita perlu menambah My

Pasang PyTorch dalam PyCharm dengan pantas: panduan mudah Pasang PyTorch dalam PyCharm dengan pantas: panduan mudah Feb 24, 2024 pm 09:54 PM

Panduan Pemasangan PyTorch: Sediakan persekitaran pembangunan dengan pantas dalam PyCharm PyTorch ialah salah satu rangka kerja yang paling popular dalam bidang pembelajaran mendalam semasa Ia mempunyai ciri-ciri kemudahan penggunaan dan fleksibiliti, dan digemari oleh pembangun. Artikel ini akan memperkenalkan cara cepat menyediakan persekitaran pembangunan PyTorch dalam PyCharm, supaya anda boleh memulakan pembangunan projek pembelajaran mendalam. Langkah 1: Pasang PyTorch Mula-mula, kita perlu memasang PyTorch. Pemasangan PyTorch biasanya perlu mengambil kira persekitaran sistem

See all articles