Spring整合Mybatis

非 Y 不嫁゛ 提交于 2020-02-24 23:18:55

1.Spring整合Mybatis,基于XML配置

1.1 引入依赖:
除Spring依赖和Mybatis依赖以外,新增:commons-logging,slf4j,mybaits-spring,druid

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.11</version>
			<scope>test</scope>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>5.1.5.RELEASE</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>5.1.5.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.16</version>
		</dependency>
		<dependency>
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
			<version>1.2</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.9.2</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>5.1.5.RELEASE</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.38</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.6</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis.generator</groupId>
			<artifactId>mybatis-generator-core</artifactId>
			<version>1.3.2</version>
		</dependency>
		<!--引入需要的ehcache插件-->
		<dependency>
			<groupId>net.sf.ehcache</groupId>
			<artifactId>ehcache</artifactId>
			<version>1.2.3</version>
		</dependency>
		<!--mybatis整合ehcache的jar-->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-ehcache</artifactId>
			<version>1.0.0</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.2</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.1.10</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.25</version>
		</dependency>


		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.25</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>

1.2 创建配置文件

		log4j.properties
		datasource.properties
		mybatis-config.xml
		applicationContext.xml
		ehcache.xml(如果不适用第三方缓存则不用引入)

1.3 创建Entity实体
1.4 创建Mapper层接口

		public interface IBankMapper {
			//查询所有银行账户
			public List<Bank> getAllBank();
		}

1.5 Mapper小配置文件

		<!--namespace需要指向接口全路径-->
		<mapper namespace="com.wdksoft.mapper.IBankMapper">
			<select id="getAllBank" resultType="Bank">
				select* from bank
			</select>
		</mapper>
		
		注意pom.xml开启扫描,否则不会加载小配置文件
			<resources>
				<resource>
					<directory>src/main/java</directory>
					<includes>
						<include>**/*.xml</include>
					</includes>
				</resource>
			</resources>

1.6 mybaits-config大配置文件内容:

		<configuration>
			<settings>
				<setting name="logImpl" value="LOG4J"/>
			</settings>


			<!--别名配置-->
			<typeAliases>
				<package name="com.wdksoft.entity"/>
			</typeAliases>
			<!--加载小配置文件-->
			<mappers>
				<package name="com.wdksoft.mapper"/>
			</mappers>
		</configuration>

1.7 配置Service层

		public interface IBankService {
			//查询所有银行账户
			public List<Bank> getAllBank();
		}

1.8 配置ServiceImpl层

		public class IBankServiceImpl implements IBankService {
			//植入Mapper层对象
			private IBankMapper iBankMapper;

			@Override
			public List<Bank> getAllBank() {
				return iBankMapper.getAllBank();
			}

			public IBankMapper getiBankMapper() {
				return iBankMapper;
			}

			public void setiBankMapper(IBankMapper iBankMapper) {
				this.iBankMapper = iBankMapper;
			}
		}

1.9 配置applicationContext.xml文件

		1.9.1 配置数据源
		1.9.2 配置SqlSessionFactory,加载数据源,加载mybatis大配置文件
		1.9.3 关联Mapper映射,扫描Mapper包,将Mapper的所有接口注入到容器
		1.9.4 将Mapper和SqlSessionFactory关联到一起
		1.9.5 将Service和Mapper关联到一起即可
		1.9.6 补充:如果用到增强和事务,你就配置,如果不用就不用配置
		
		<!--加载jdbc.properties配置文件-->
		<context:property-placeholder location="classpath:jdbc.properties"/>
		
		<!--配置DataSource  阿里: druid     c3p0      dbcp-->
		<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
			<property name="driverClassName" value="${jdbc.driver}"/>
			<property name="url" value="${jdbc.url}"/>
			<property name="username" value="${jdbc.username}"/>
			<property name="password" value="${jdbc.password}"/>
		</bean>
		
		<!--配置SqlSessionfactory-->
		<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
			<!--加载数据源-->
			<property name="dataSource" ref="dataSource"/>
			<!--加载mybatis大配置文件-->
			<property name="configLocation" value="classpath:mybatis-config.xml"/>
		</bean>
		
		<!--关联Mapper映射-->
		<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
			<property name="basePackage" value="com.wdksoft.mapper"/>
		</bean>
		
		<!--Mapper注入,利用代理工厂生成对象-->
		<bean id="iBankMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
			<!--代理的Mapper-->
			<property name="mapperInterface" value="com.wdksoft.mapper.IBankMapper"/>
			<property name="sqlSessionFactory" ref="sqlSessionFactoryBean"/>
		</bean>
		
		<!--Service层注入-->
		<bean id="iBankService" class="com.wdksoft.service.impl.IBankServiceImpl">
			<property name="iBankMapper" ref="iBankMapper"/>
		</bean>

1.10 测试

		public static void main(String[] args) {
			ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
			IBankService iBankService =(IBankService) applicationContext.getBean("iBankService");

			List<Bank> allBank = iBankService.getAllBank();
			for (Bank bank:allBank){
				System.out.println(bank.toString());
			}
		}

2.Spring整合Mybatis,基于注解配置

	**1.1 引入依赖:**
		
		除Spring依赖和Mybatis依赖以外,新增:commons-logging,slf4j,mybaits-spring,druid
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.11</version>
			<scope>test</scope>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>5.1.5.RELEASE</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>5.1.5.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.16</version>
		</dependency>
		<dependency>
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
			<version>1.2</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.9.2</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>5.1.5.RELEASE</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.38</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.6</version>
		</dependency>
		<dependency>
			<groupId>org.mybatis.generator</groupId>
			<artifactId>mybatis-generator-core</artifactId>
			<version>1.3.2</version>
		</dependency>
		<!--引入需要的ehcache插件-->
		<dependency>
			<groupId>net.sf.ehcache</groupId>
			<artifactId>ehcache</artifactId>
			<version>1.2.3</version>
		</dependency>
		<!--mybatis整合ehcache的jar-->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-ehcache</artifactId>
			<version>1.0.0</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.3.2</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.1.10</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.25</version>
		</dependency>


		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.25</version>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>

1.2 创建配置文件

		log4j.properties
		datasource.properties
		mybatis-config.xml
		applicationContext.xml
		ehcache.xml(如果不适用第三方缓存则不用引入)

1.3 创建Entity实体
1.4 创建Mapper层接口

		@Repository
		public interface IBankMapper {
			//查询所有银行账户
			public List<Bank> getAllBank();
		}

1.5 Mapper小配置文件

		<!--namespace需要指向接口全路径-->
		<mapper namespace="com.wdksoft.mapper.IBankMapper">
			<select id="getAllBank" resultType="Bank">
				select* from bank
			</select>
		</mapper>
		
		注意pom.xml开启扫描,否则不会加载小配置文件
			<resources>
				<resource>
					<directory>src/main/java</directory>
					<includes>
						<include>**/*.xml</include>
					</includes>
				</resource>
			</resources>

1.6 mybaits-config大配置文件内容:

		<configuration>
			<settings>
				<setting name="logImpl" value="LOG4J"/>
			</settings>


			<!--别名配置-->
			<typeAliases>
				<package name="com.wdksoft.entity"/>
			</typeAliases>
			<!--加载小配置文件-->
			<mappers>
				<package name="com.wdksoft.mapper"/>
			</mappers>
		</configuration>

1.7 配置Service层

		public interface IBankService {
			//查询所有银行账户
			public List<Bank> getAllBank();
		}

1.8 配置ServiceImpl层

		@Service("iBankService")
		public class IBankServiceImpl implements IBankService {
			//植入Mapper层对象
			@Resource
			private IBankMapper iBankMapper;

			@Override
			public List<Bank> getAllBank() {
				return iBankMapper.getAllBank();
			}

		}

1.9 配置applicationContext.xml文件

		1.9.1 配置数据源
		1.9.2 配置SqlSessionFactory,加载数据源,加载mybatis大配置文件
		1.9.3 关联Mapper映射,扫描Mapper包,将Mapper的所有接口注入到容器
		1.9.4 将Mapper和SqlSessionFactory关联到一起
		1.9.5 将Service和Mapper关联到一起即可
		1.9.6 补充:如果用到增强和事务,你就配置,如果不用就不用配置
		
		<!--加载jdbc.properties配置文件-->
		<context:property-placeholder location="classpath:jdbc.properties"/>
		
		<!--配置DataSource  阿里: druid     c3p0      dbcp-->
		<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
			<property name="driverClassName" value="${jdbc.driver}"/>
			<property name="url" value="${jdbc.url}"/>
			<property name="username" value="${jdbc.username}"/>
			<property name="password" value="${jdbc.password}"/>
		</bean>
		
		<!--配置SqlSessionfactory-->
		<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
			<!--加载数据源-->
			<property name="dataSource" ref="dataSource"/>
			<!--加载mybatis大配置文件-->
			<property name="configLocation" value="classpath:mybatis-config.xml"/>
		</bean>
		
		<!--关联Mapper映射-->
		<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
			<property name="basePackage" value="com.wdksoft.mapper"/>
		</bean>
		
		<!--注解扫描-->
		<context:component-scan base-package="com.wdksoft"/>
		
		<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
			<property name="dataSource" ref="dataSource"></property>
		</bean>
		
		<!--开启事务-->
		<tx:annotation-driven/>

1.10 测试

		public static void main(String[] args) {
			ApplicationContext applicationContext=new ClassPathXmlApplicationContext("applicationContext.xml");
			IBankService iBankService =(IBankService) applicationContext.getBean("iBankService");

			List<Bank> allBank = iBankService.getAllBank();
			for (Bank bank:allBank){
				System.out.println(bank.toString());
			}
		}

3.使用pageHelper

3.1 基于Mybatis大配置文件

		<plugins>
			<plugin interceptor="com.github.pagehelper.PageHelper"></plugin>
		</plugins>

3.2 基于Spring大配置文件

		<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
			<!--加载数据源-->
			<property name="dataSource" ref="dataSource"/>
			<!--加载mybatis大配置文件-->
			<property name="configLocation" value="classpath:mybatis-config.xml"/>

			<property name="plugins">
				<array>
					<bean class="com.github.pagehelper.PageHelper">
					</bean>
				</array>
			</property>
		</bean>

4.mybatis-generator使用,反向生成插件,能够根据数据库反向生成实体和Mapper接口

4.1 导入依赖

		<dependency>
			<groupId>org.mybatis.generator</groupId>
			<artifactId>mybatis-generator-core</artifactId>
			<version>1.3.2</version>
		</dependency>

4.2 开启mybatis-generator插件

			<plugin>
                <!--Mybatis-generator插件,用于自动生成Mapper和POJO-->
                <groupId>org.mybatis.generator</groupId>
                <artifactId>mybatis-generator-maven-plugin</artifactId>
                <version>1.3.2</version>
                <configuration>
                    <!--配置文件的位置 一定要改成配置文件的位置-->
                    <configurationFile>src/main/resources/generatorConfig.xml</configurationFile>
                    <verbose>true</verbose>
                    <overwrite>true</overwrite>
                </configuration>
                <executions>
                    <execution>
                        <id>Generate MyBatis Artifacts</id>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>org.mybatis.generator</groupId>
                        <artifactId>mybatis-generator-core</artifactId>
                        <version>1.3.2</version>
                    </dependency>
                </dependencies>
            </plugin>

4.3 配置generatorConfig.xml生成规则

		1.数据库驱动jar包位置
			<classPathEntry location="F:\maven\mvnRepo\mysql\mysql-connector-java\5.1.38\mysql-connector-java-5.1.38.jar"/>
		2.数据库链接URL,用户名、密码
			<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/smbms" userId="root" password="root">
		3.<!-- 实体类生成的位置 -->
			<javaModelGenerator targetPackage="com.smbms.test.entity" targetProject=".\src\main\java">
				<property name="enableSubPackages" value="false"/>
				<property name="trimStrings" value="true"/>
			</javaModelGenerator>
		4.<!-- *Mapper.xml 文件的位置 -->
			<sqlMapGenerator targetPackage="com.smbms.test.mapper" targetProject=".\src\main\java">
				<property name="enableSubPackages" value="false"/>
			</sqlMapGenerator>

		5.<!-- Mapper 接口文件的位置 -->
			<javaClientGenerator targetPackage="com.smbms.test.mapper" targetProject=".\src\main\java" type="XMLMAPPER">
				<property name="enableSubPackages" value="false"/>
			</javaClientGenerator>
		6.<!-- 相关表的配置 -->
			<table tableName="smbms_address" domainObjectName="Smbms_Address"
			   enableCountByExample="false"
			   enableDeleteByExample="false"
			   enableSelectByExample="false"
			   enableUpdateByExample="false"/>

4.4 启动插件,进行生成

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!