首页 > 编程语言 > 详细

springboot 整合 mybatis

时间:2018-06-29 13:33:52      阅读:306      评论:0      收藏:0      [点我收藏+]

看了几篇整合的博客,开始搭建

 

新建一个maven(可以直接选maven上面那个,快速构建一个spring项目,不过我的idea(16)给的(next后的页面选项,不是本图的jdk)jdk没有1.7的选项,所以我就用maven构建了)

技术分享图片

 

构建后,pom.xml

 <!-- 继承父包 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.5.9.RELEASE</version>
    </parent>

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

    <dependencies>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!-- web -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- 测试 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>


        <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.1</version>
        </dependency>
        <!-- mysql连接 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>

        </dependency>

        <!-- 热部署-->
        <!--springloaded :实现修改类文件的热部署-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>springloaded</artifactId>
        </dependency>
        <!--页面,代码的热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>

    

        <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>


    
    </dependencies>


    <build>

        <pluginManagement>
            <plugins>
                <plugin>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.7</source>
                        <target>1.7</target>
                    </configuration>
                </plugin>


                <!--Mybatis-generator-->
                <plugin>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-maven-plugin</artifactId>
                    <version>1.3.2</version>
                    <configuration>
                        <overwrite>true</overwrite>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

  

梳理项目结构:

技术分享图片

 

application.properties

技术分享图片

 

 

generatorConfig.xml(mybatis代码生成器)

<?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>

    <!--
        出现错误:Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
        解决办法:将本地的MAVEN仓库中的mysql驱动引入进来
    -->
    <classPathEntry location="C:\work\mavenFile\mysql\mysql-connector-java\5.1.30\mysql-connector-java-5.1.30.jar"/>

    <context id="mysqlgenerator" targetRuntime="MyBatis3Simple">
        <!--不生成注释-->
        <commentGenerator>
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        <!-- 配置数据库连接 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/huahua"
                        userId="lsl"
                        password="123456" />

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

        <!--指定sql映射文件生成的位置 -->
        <sqlMapGenerator targetPackage="mapping" targetProject="src/main/resources" >
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>
        <!-- 指定dao接口生成的位置,mapper接口 -->
        <javaClientGenerator type="XMLMAPPER" targetPackage="com.lsl.store.mapper" targetProject="src/main/java" >
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>

        <!-- 选择一个table来生成相关文件,可以有一个或多个table,必须要有table元素
        选择的table会生成一下文件:
        1,SQL map文件
     -->
        <table tableName="%" >

            <!-- 参考 javaModelGenerator 的 constructorBased属性-->
            <property name="constructorBased" value="false"/>

            <!-- 默认为false,如果设置为true,在生成的SQL中,table名字不会加上catalog或schema; -->
            <property name="ignoreQualifiersAtRuntime" value="false"/>

            <!-- 参考 javaModelGenerator 的 immutable 属性 -->
            <property name="immutable" value="false"/>

            <!-- 指定是否只生成domain类,如果设置为true,只生成domain类,如果还配置了sqlMapGenerator,那么在mapper XML文件中,只生成resultMap元素 -->
            <property name="modelOnly" value="false"/>

            <!-- 如果设置为true,生成的model类会直接使用column本身的名字,而不会再使用驼峰命名方法,比如BORN_DATE,生成的属性名字就是BORN_DATE,而不会是bornDate -->
            <property name="useActualColumnNames" value="false"/>

        </table>

    </context>

</generatorConfiguration>

  

开始生成代码(生成器插件在pom.xml):

技术分享图片

技术分享图片

技术分享图片

 

编写代码,测试:

技术分享图片

技术分享图片

ok,整合成功,剩下的就是堆代码,整合其它了。

 

整合须知:

mybatis的映射文件必须放在resources内,否则报错找不到。(可能是xml吗,可以试试注解,

需要在启动类添加@MapperScan   (扫描mapper接口

idea自动编译:setting-complier-auto.....

springboot热部署:pom.xml里有

 

嗯,暂时就折磨多!

 

继续堆代码之事务:

自动配置自动配置自动配置,(你也可以自己搞,不过默认的已经够用了,毕竟个人的的项目很小

1.自动配置事务管理器:

在使用JDBC作为数据访问技术时,(pom.xml自己看),springboot会我们定义PlatformTransaction Manager的实现DataSourceTransactionManager的bean,

配置见源码:jdbc.DataSourceTransactionManagerAutoConfiguration类中的定义。

在使用jpa,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,JpaTransactionManager的bean,

,,,,,jpa.JpaBaseConfiguration类中的定义

(本项目使用jdbc的事务管理器)

2.自动开启注解事务的支持:

springboot专门用于配置事务的类:TransactionAutoConfiguration,该类依赖于上述两个源码类

在DataSourceTransactionManagerAutoConfiguration里自动开启了对声明式事务的支持,所以jdbc(pom.xml),所以在启动类无须显示开启使用@EnableTransactionManagement

 

所以使用jdbc的事务,啥都不用,(貌似使用jpa还需显示开启

所以测试下把:在serivce模拟移除删除:

技术分享图片

继续在controller编写响应的代码,测试(不截图了,懒,反正回滚了,反正没删掉,写错的话,不要打我啊

ok,事务这块暂时就到这,以后有新发现再添加。

 

springboot 整合 mybatis

原文:https://www.cnblogs.com/lslshuo/p/9242677.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!