1.idea创建springboot项目
1.创建项目
2.下一步
3.下一步
4.这样项目便创建完成
2.集成mybaties和mysql
1.pom文件依赖
<!--mybatis 配置--> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>${org.mybatis.spring.boot.version}</version> </dependency> <!--数据库配置--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${com.alibaba.version}</version> </dependency>
<!--添加上插件,使得用generator配置文件去逆向生成mapper,model和dao-->
<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <configuration> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> </plugin> </plugins> </build>
2.GeneratorConfig.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> <context id="mysql" targetRuntime="MyBatis3"> <plugin type="org.mybatis.generator.plugins.EqualsHashCodePlugin"></plugin> <plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin> <plugin type="org.mybatis.generator.plugins.ToStringPlugin"></plugin> <commentGenerator> <!-- 避免生成注解 <propertyname="suppressDate" value="true" /> --> <property name="suppressAllComments" value="true" /> </commentGenerator> <jdbcConnection driverClass="${spring.datasource.driver-class-name}" connectionURL="${spring.datasource.url}" userId="${spring.datasource.username}" password="${spring.datasource.password}" /> <!-- 指定生成的类型为java类型,避免数据库中number等类型字段 --> <javaTypeResolver type="org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl"> <!-- true:使用BigDecimal对应DECIMAL和 NUMERIC数据类型 false:默认, scale>0;length>18:使用BigDecimal; scale=0;length[10,18]:使用Long; scale=0;length[5,9]:使用Integer; scale=0;length<5:使用Short; --> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!-- 生成model模型,对应的包,存放位置可以指定具体的路径,如/ProjectName/src,也可以使用MAVEN来自动生成 --> <javaModelGenerator targetPackage="com.learn.message.model" targetProject="src/main/java"> <!-- 是否在当前路径下新加一层schema,eg:fase路径com.oop.eksp.user.model, true:com.oop.eksp.user.model.[schemaName] --> <!-- 在targetPackage的基础上,根据数据库的schema再生成一层package,最终生成的类放在这个package下,默认为false --> <property name="enableSubPackages" value="false" /> <!-- 设置是否在getter方法中,对String类型字段调用trim()方法 --> <property name="trimStrings" value="true" /> </javaModelGenerator> <!--对应的xml mapper文件 --> <sqlMapGenerator targetPackage="mappers" targetProject="src/main/resources/mybatis"> <!-- 是否在当前路径下新加一层schema,eg:fase路径com.oop.eksp.user.model, true:com.oop.eksp.user.model.[schemaName] --> <property name="enableSubPackages" value="false" /> </sqlMapGenerator> <!-- 对应的dao接口 --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.learn.message.dao" targetProject="src/main/java"> <!-- 是否在当前路径下新加一层schema,eg:fase路径com.oop.eksp.user.model, true:com.oop.eksp.user.model.[schemaName] --> <property name="enableSubPackages" value="false" /> <property name="useActualColumnNames" value="true" /> </javaClientGenerator> <table tableName="userinfo" domainObjectName="UserInfoPO" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" > <property name="useActualColumnNames" value="false"/> </table> </context> </generatorConfiguration>
3.配置文件的配置application.properties
#数据库的配置 spring.datasource.url=jdbc:mysql://localhost:3306/demo?characterEncoding=utf8&characterSetResults=utf8&autoReconnect=true&failOverReadOnly=false spring.datasource.username=root spring.datasource.password=root spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver #Mybatis 配置 #包路径扫描 mybatis.type-aliases-package=com.learn.message.model #主数据源用到的mappers文件 mybatis.mapper-location=classpath:mybatis/mappers/*.xml
#分页方言 pageHelper.dialect=oracle
4.数据源的配置
/* * @ClassName: DruidDataSourceConfig * @Description: 数据源的配置 * @author ss * @date 2019年07月05日 下午2:50:12 */ @Configuration @MapperScan(basePackages = "com.learn.message.dao", sqlSessionFactoryRef = "sqlSessionFactory") public class DruidDataSourceConfig { @Value("${spring.datasource.type}") private Class<? extends DataSource> dataSourceType; @Value("${mybatis.mapper-location}") private String mapperLocations; @Value("${mybatis.config-location}") private String configLocations; @Value("${mybatis.type-aliases-package}") private String typeAliasesPackage; @Value("${pageHelper.dialect}") private String pageHelperDialect; //数据源 @Bean(name = "dataSource", destroyMethod = "close") @ConfigurationProperties(prefix = "spring.datasource.url") @Primary public DataSource dataSource() { return DataSourceBuilder.create().type(dataSourceType).build(); } @Bean(name = "sqlSessionFactory") @Primary public SqlSessionFactory sqlSessionFactory() throws Exception { PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver(); SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean(); sqlSessionFactoryBean.setDataSource(dataSource()); sqlSessionFactoryBean.setTypeAliasesPackage(typeAliasesPackage); //设置mapper.xml文件所在位置 sqlSessionFactoryBean.setMapperLocations(resolver.getResources(mapperLocations)); //设置mybatis-config.xml配置文件所在位置 sqlSessionFactoryBean.setConfigLocation(resolver.getResource(configLocations)); //添加分页插件、打印sql插件 Interceptor[] plugins = new Interceptor[] {sqlInterceptor(),pageHelper()}; sqlSessionFactoryBean.setPlugins(plugins); return sqlSessionFactoryBean.getObject(); } @Bean(name = "transactionalManager") @Primary public PlatformTransactionManager transactionManager() throws SQLException { return new DataSourceTransactionManager(dataSource()); } @Bean(name = "pageHelper") @Primary public PageHelper pageHelper() { PageHelper pageHelper = new PageHelper(); Properties p = new Properties(); p.setProperty("offsetAsPageNum", "true"); p.setProperty("rowBoundsWithCount", "true"); p.setProperty("reasonable", "true"); p.setProperty("returnPageInfo", "check"); p.setProperty("params", "count=countSql"); p.setProperty("dialect", pageHelperDialect); pageHelper.setProperties(p); return pageHelper; } }
5.事物配置
在启动类上添加EnableTransactionManagement注解
注意
启动的时候可能会报java.lang.UnsupportedClassVersionError: org/springframework/boot/SpringApplication : Unsupported major.minor version 52.0错,这个时候,是因为我用的1.7的jdk,但是springboot创建的时候是1.8。将pom文件依赖包的版本号改为低的。