创建springboot项目并用idea集成generator详解

前期准备

生成项目

在spring官网https://start.spring.io/自动生成springboot项目,这里选择项目自动依赖web/mybatis/mysql,然后点击Generate Project下载项目到本地。
在这里插入图片描述

导入项目到idea

解压上面下载的demo.zip文件到~/myproject/,在idea里File->open->~/myproject/demo,项目成功导入。

集成generator

从官网获取generatorConfig文件

http://www.mybatis.org/generator/configreference/xmlconfig.html
复制以下内容到~/myproject/demo/src/main/resources/generator目录,命名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>
  <classPathEntry location="/Program Files/IBM/SQLLIB/java/db2java.zip" />

  <context id="DB2Tables" targetRuntime="MyBatis3">
    <jdbcConnection driverClass="COM.ibm.db2.jdbc.app.DB2Driver"
        connectionURL="jdbc:db2:TEST"
        userId="db2admin"
        password="db2admin">
    </jdbcConnection>

    <javaTypeResolver >
      <property name="forceBigDecimals" value="false" />
    </javaTypeResolver>

    <javaModelGenerator targetPackage="test.model" targetProject="\MBGTestProject\src">
      <property name="enableSubPackages" value="true" />
      <property name="trimStrings" value="true" />
    </javaModelGenerator>

    <sqlMapGenerator targetPackage="test.xml"  targetProject="\MBGTestProject\src">
      <property name="enableSubPackages" value="true" />
    </sqlMapGenerator>

    <javaClientGenerator type="XMLMAPPER" targetPackage="test.dao"  targetProject="\MBGTestProject\src">
      <property name="enableSubPackages" value="true" />
    </javaClientGenerator>

    <table schema="DB2ADMIN" tableName="ALLTYPES" domainObjectName="Customer" >
      <property name="useActualColumnNames" value="true"/>
      <generatedKey column="ID" sqlStatement="DB2" identity="true" />
      <columnOverride column="DATE_FIELD" property="startDate" />
      <ignoreColumn column="FRED" />
      <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" />
    </table>

  </context>
</generatorConfiguration>

说明:复制到idea项目中mybatis-generator-config_1_0.dtd可能会标红,因为这个文件依赖mybatis-generator-core这个包。
在pom.xml加入依赖即可解决标红问题,记得刷新maven。

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

generatorConfiguration这个标签下的子标签,有如下约束

<!ELEMENT generatorConfiguration (properties?, classPathEntry*, context+)>

第一个子标签如果有则必须是properties
第二个子标签如果有则必须是classPathEntry
第三哥标签context必须有一个或者多个
同样的context子标签有如下约束

<!ELEMENT context (property*, plugin*, commentGenerator?, (connectionFactory | jdbcConnection), javaTypeResolver?,
                         javaModelGenerator, sqlMapGenerator?, javaClientGenerator?, table+)>

注意:标签有序

修改为mysql可用的配置文件

<?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>
  <!--<properties resource="application.properties"/>-->
  <!--这里注释掉,后面集成插件的时候,在pom.xml文件导入驱动-->
  <!--<classPathEntry location="~/mysql/mysql-connector-java-8.0.13.jar" />-->
  <!--1,MyBatis3:默认的值;
      2,MyBatis3Simple:生成的mapper和xml比较简洁干净-->
  <context id="Mysql" targetRuntime="MyBatis3" defaultModelType="flat">
    <property name="beginningDelimiter" value="`"/>
    <property name="endingDelimiter" value="`"/>
    <property name="javaFileEncoding" value="UTF-8" />
    <!--pressAllComments:MyBatis3默认为false,true则默认不生成注释
    suppressDate:MyBatis3默认为false,默认不生成时间戳-->
    <commentGenerator>
      <property name="suppressDate" value="true"/>
      <property name="suppressAllComments" value="true"/>
    </commentGenerator>
    <!--新版mysql驱动用的是com.mysql.cj.jdbc.Driver,老版本的是com.mysql.jdbc.Driver-->
    <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
      connectionURL="jdbc:mysql://127.0.0.1:3306/dbname"
      userId="root"
      password="123456">
    </jdbcConnection>

    <javaModelGenerator targetPackage="com.cyz.demo.entity" targetProject="src/main/java"/>

    <sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"/>

    <javaClientGenerator targetPackage="com.cyz.demo.dao.mapper" targetProject="src/main/java" type="XMLMAPPER"/>

<!--去掉example代码-->
    <table tableName="test_table" domainObjectName="TestTable" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false"
      enableSelectByExample="false" selectByExampleQueryId="false">
      <!--% 表示全部表-->
      <!--mysql 配置-->
      <generatedKey column="id" sqlStatement="Mysql" identity="true"/>
      <!--oracle 配置-->
      <!--  <generatedKey column="id" sqlStatement="select SEQ_{1}.nextval from dual" identity="false" type="pre"/> -->
    </table>

  </context>
</generatorConfiguration>

集成插件

在pom.xml中加入以下配置集成插件

<build>
		<plugins>
		<!--其他插件,复制下面内容即可,从<plugin>到</plugin>-->
		<plugin>
				<groupId>org.mybatis.generator</groupId>
				<artifactId>mybatis-generator-maven-plugin</artifactId>
				<version>1.3.2</version>
				<configuration>
					<configurationFile>${basedir}/src/main/resources/generator/generatorConfig.xml</configurationFile>
					<overwrite>true</overwrite>
					<verbose>true</verbose>
				</configuration>
				<dependencies>
					<dependency>
						<groupId>mysql</groupId>
						<artifactId>mysql-connector-java</artifactId>
						<version>8.0.13</version>
					</dependency>
				</dependencies>
			</plugin>
		</plugins>
</build>

刷新maven后,可以在idea的mavenProject里看到
在这里插入图片描述
双击即可运行,即可在项目中看到生成的文件。
也可以通过在maven里添加mybatis-generator:generate -e命令运行
在这里插入图片描述
在这里插入图片描述
注意:这里xml文件如果有则追加,没有则新增。
在这里插入图片描述

生成的包运用到Springboot项目中

在application.properties文件中加入以下配置

server.port = 8080

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/dbname?useSSL=false&useUnicode=true&characterEncoding=utf8&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=123456

mybatis.typeAliasesPackage = com.cyz.demo.entity
mybatis.mapperLocations =  classpath:mapper/*.xml

新增controller和service,TestController.java代码如下

package com.cyz.demo.controller;


import com.cyz.demo.entity.TestTable;
import com.cyz.demo.service.TestTableService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/test")
public class TestController {

  @Autowired
  private TestTableService service;

  @GetMapping("/get")
  public TestTable getTest(
      @RequestParam("id") Long id) {
    TestTable testTable =service.getTestTable(id);
    return testTable;
  }
}

TestTableServiceImpl.java代码如下

package com.cyz.demo.service.impl;

import com.cyz.demo.dao.mapper.TestTableMapper;
import com.cyz.demo.entity.TestTable;
import com.cyz.demo.service.TestTableService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class TestTableServiceImpl implements TestTableService {
  @Autowired
  private TestTableMapper mapper;

  public TestTable getTestTable(Long id) {
    return mapper.selectByPrimaryKey(id);
  }
}

TestTableService.java代码如下

package com.cyz.demo.service;

import com.cyz.demo.entity.TestTable;

public interface TestTableService {

  TestTable getTestTable(Long id);
}

创建数据库脚本如下

create database dbname;
use dbname;
CREATE TABLE `test_table` (
     `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
     `col1` VARCHAR(70) ,
     `col2` VARCHAR(70) ,
     `col3` VARCHAR(70) ,
     PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

附上代码目录
在这里插入图片描述

问题总结:

  • Field mapper in com.cyz.demo.service.impl.TestTableServiceImpl required a bean of type ‘com.cyz.demo.dao.mapper.TestTableMapper’ that could not be found.
    问题原因:mapper类未扫描到。
    解决方案:
    DemoApplication类上加注解扫描到mapper
    @MapperScan({“com.cyz.demo.dao”})
  • Invalid bound statement (not found): com.cyz.demo.dao.mapper.TestTableMapper.selectByPrimaryKey] with root cause
    问题原因:mapper.xml路径配置错误
    检查xml文件目录是否与application.properties里的mybatis.mapperLocations = classpath:mapper/*.xml一致。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值