看了几篇整合的博客,开始搭建
新建一个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,事务这块暂时就到这,以后有新发现再添加。
原文:https://www.cnblogs.com/lslshuo/p/9242677.html