Spring-Mybatis整合

本文档详细介绍了如何从创建Maven webapp项目开始,逐步整合Spring和Mybatis,包括导入依赖、配置mybatis-config.xml、设置数据源Druid、创建Mapper、配置Mybatis代码生成器以及测试步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.创建maven项目最好选择webapp

 2.选择webapp项目

3.导入需要的依赖

1.部署mybatis框架部分

1.1在pom.xml添加相关的mybatis依赖 和spring...以及相关依赖

    <dependencies>

        <!--mybatis框架搭建依赖 -->
        <!--junit 测试依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <!--mysql数据库依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.22</version>
        </dependency>

        <!--mybatis框架依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>

        <!--Lombok  Java库 不需要再写getter、setter或equals方法,只要有一个注解-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.24</version>
            <scope>provided</scope>
        </dependency>

        <!-- spring依赖 -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.13</version>
        </dependency>

        <!--aop切面模块-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>5.3.13</version>
        </dependency>

        <!--Spring JDBC 框架负责所有的低层细节,从开始打开连接,准备和执行 SQL 语句,处理异常,处理事务,到最后关闭连接-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.13</version>
        </dependency>

        <!--将 MyBatis 代码无缝地整合到 Spring 中-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.0.7</version>
        </dependency>

        <!--Java简单日志门面-->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.25</version>
            <scope>test</scope>
        </dependency>

        <!--是一个数据库连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.11</version>
        </dependency>

        <!--自动装配 自动生成代码生成mybatis模块-->
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-maven-plugin</artifactId>
            <version>1.3.2</version>
        </dependency>

    </dependencies>

    <build>
        <finalName>spring_Mybatis</finalName>
        <!--自动装配依赖读取 和读取自动生成代码核心配置-->
        <plugins>
            <plugin>
                <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>
            </plugin>
        </plugins>
    </build>

4. 在rsourcese目录下新建 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>

</configuration>

4.1在rsourcese下添加log4j.propertie文件

# Set root category priority to INFO and its only appender to CONSOLE.
log4j.rootCategory=DEBUG, CONSOLE,LOGFILE
# log4j.rootCategory=INFO, CONSOLE, LOGFILE

# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern=- %m %c %l %d{yyyy-MM-dd HH:mm:ss}%n
# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender 
log4j.appender.LOGFILE.File=./test.log 
log4j.appender.LOGFILE.Append=true 
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout 
log4j.appender.LOGFILE.layout.ConversionPattern=- %m %l%n

4.2添加日志 在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="SLF4J"/>
</settings>
</configuration>

4.3依赖已经在pom.xml里面添加了

5部署Spring框架

5.1创建applicationContext.xml配置文件         

<beans xmlns="http://www.springframework.org/schema/beans" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xmlns:aop="http://www.springframework.org/schema/aop" 
       xmlns:context="http://www.springframework.org/schema/context" 
       xsi:schemaLocation="http://www.springframework.org/schema/beans  
        https://www.springframework.org/schema/beans/spring-beans.xsd 
         http://www.springframework.org/schema/aop  
         https://www.springframework.org/schema/aop/spring-aop.xsd 
         http://www.springframework.org/schema/context 
         https://www.springframework.org/schema/context/spring-context.xsd"> 
 
</beans> 

5.2Spring整合MyBatis的依赖  --已经在pom.xml文件添加了

5.配置数据源   druid    

5.3添加druid依赖 已经在pom.xml文件添加了 

5.4创建druid.properties文件

druid.driver=com.mysql.cj.jdbc.Driver 
druid.url=jdbc:mysql://localhost:3306/interesting_shop_db?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai 
druid.username=root 
druid.password=123456
 
## 连接池参数 
druid.pool.init=1 
druid.pool.minIdle=3 
druid.pool.maxActive=20 
druid.pool.maxWait=30000 

5.5在Spring配置文件中配置DruidDataSource  跟上面druid.properties文件相结合 都添加在applicationContext.xml文件里面

<!--加载druid.properties文件--> 
 <context:property-placeholder location="classpath:druid.properties"/> 
 <!--数据源DataSource的创建--> 
 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> 
     <property name="driverClassName" value="${druid.driver}"/> 
     <property name="url" value="${druid.url}"/> 
     <property name="username" value="${druid.username}"/> 
     <property name="password" value="${druid.password}"/> 
 
     <property name="initialSize" value="${druid.pool.init}"/> 
     <property name="minIdle" value="${druid.pool.minIdle}"/> 
     <property name="maxActive" value="${druid.pool.maxActive}"/> 
     <property name="maxWait" value="${druid.pool.maxWait}"/> 
 </bean> 

5.6在spring配置文件里面     创建SqlSessionFactory   --使用 MyBatis 首先是使用配置或者代码去生产 SqlSessionFactory,而 MyBatis 提供了构造器 SqlSessionFactoryBuilder。都添加在applicationContext.xml文件里面

<!--MyBatis的SqlSessionFactory对象的创建--> 
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> 
    <!--配置数据源--> 
    <property name="dataSource" ref="dataSource"/> 
    <!--配置Mapper文件路径  要在 rsourcese目录下创建mappers文件 里面创建Mapper.xml配置文件 --> 
    <property name="mapperLocations" value="classpath:mappers/*Mapper.xml"/> 
    <!--配置需要定义别名的实体类的包--> 
    <property name="typeAliasesPackage" value="com.xxx.pojo"/> 
    <!--配置MyBatis的配置文件--> 
    <property name="configLocation" value="classpath:mybatis-config.xml"/> 
</bean> 

 6创建Mapper

<?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 命名空间 
     id 标识 
     resultType 查询结果的返回值类型 
--> 
<mapper namespace="com.xxx.dao.UserDao"> 
 
</mapper>

6.1把Mapper 创建所有的dao接口并存储在Spring容器中 都添加在applicationContext.xml文件里面

<!--加载dao包中的所有接口,通过sqlSessionFactory获取sqlSession对象,然后创建所有的dao接口并存储在Spring容器中--> 
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> 
        <property name="basePackage" value="com.gyh.dao"/> 
    </bean> 

到这里基本搭建都完成了,接下来就是,搭建自动生成代码环境配置以及测试

7.配置 Mybatis代码生成器

 7.1核心配置文件 文件名为genertorComfig.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>

    <!--
        数据库驱动
            在左侧project边栏的External Libraries中找到mysql的驱动,右键选择copy path  这里选择自己的msyql依赖路径
    -->
    <classPathEntry  location="D:\Softinstall\apache-maven-3.8.4\repository\mysql\mysql-connector-java\8.0.18\mysql-connector-java-8.0.18.jar"/>

    <context id="DB2Tables" targetRuntime="MyBatis3">

        <commentGenerator>
            <!-- 是否去除日期那行注释 -->
            <property name="suppressDate" value="true"/>
            <!-- 是否去除自动生成的注释 true:是 : false:否 -->
            <property name="suppressAllComments" value="true"/>
        </commentGenerator>

        <!-- 数据库链接地址账号密码 -->
        <jdbcConnection
                driverClass="com.mysql.cj.jdbc.Driver"
                <!--数据库链接地址 要注意的是这个是8.0版本的数据库链接地址?serverTimezone=GMT%2B8  5.0版本的数据库自己注意看下-->
                connectionURL="jdbc:mysql://127.0.0.1:3306/test?serverTimezone=GMT%2B8"
                <!--修改成自己的数据库名-->
                userId="root"
                <!--修改成自己的数据库密码-->
                password="root123">
        </jdbcConnection>

        <!--
             java类型处理器
                用于处理DB中的类型到Java中的类型,默认使用JavaTypeResolverDefaultImpl;
                注意一点,默认会先尝试使用Integer,Long,Short等来对应DECIMAL和NUMERIC数据类型;
                true:使用 BigDecimal对应DECIMAL和NUMERIC数据类型
                false:默认,把JDBC DECIMAL和NUMERIC类型解析为Integer
        -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false"/>
        </javaTypeResolver>



        <!-- 生成Model类存放位置 -->
        <javaModelGenerator targetPackage="com.csdj.vo" targetProject="src/main/java">
            <!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false -->
            <property name="enableSubPackages" value="true"/>
            <!-- 设置是否在getter方法中,对String类型字段调用trim()方法 -->
            <property name="trimStrings" value="true"/>
        </javaModelGenerator>


        <!--生成映射文件存放位置-->
        <sqlMapGenerator targetPackage="mappers" targetProject="src/main/resources">
            <property name="enableSubPackages" value="true"/>
        </sqlMapGenerator>


        <!--生成Dao类存放位置-->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.csdj.dao" targetProject="src/main/java">
            <property name="enableSubPackages" value="true"/>
        </javaClientGenerator>

          <!--需要修改 数据库名:tableName="student"
          以及对应实体类名:domainObjectName="Student" -->

        <table tableName="student" domainObjectName="Student"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false"></table>

    </context>
</generatorConfiguration>

7.2生成代码在idea右侧选择   双击就可以自动生成了

自动生成代码小结,只适合简单的curd 也可以生成好 当对应的模板后面直接自己写 

 

 

 8测试

在test文件夹下面编写测试类

 

import com.csdj.dao.UserMapper;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 测试整合是否完成
 */
public class Stater {
    public static void main(String[] args) {
        ApplicationContext cxt = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserMapper userMapper = (UserMapper) cxt.getBean("userMapper");
        userMapper.selectByPrimaryKey(1);
        System.out.println(userMapper);
    }
}

整个-整合目录

 

 

 同学们要是觉得有问题可以反馈会及时修改操作有问题可以私信解决!谢谢各位同学,制作不易

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值