idea中springboot集成mybatis,并用mybatis generator自动生成代码

1.导入mybatis相关jar包

<!-- mybatis -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.0.0</version>
</dependency>
<!--mysql数据库连接-->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.1</version>
</dependency>

注:mysql-connector-java版本不能太高,如果超过了mysql版本,会报如下错误。

java.sql.SQLNonTransientConnectionException: CLIENT_PLUGIN_AUTH is required

2.引入generator插件,并配置xml资源文件(编译时会自动生成)

<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>
            <version>1.3.7</version>
        </plugin>

    </plugins>

    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.xml</include>
            </includes>
        </resource>
    </resources>
</build>

注:若没有配置.xml文件,则*Mapper.xml文件不会生成到编译后的包中,运行后,Mapper接口匹配不到*Mapper.xml文件,将会报如下错误。

 

Resolved [org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xglong.mybatis.generator.mapper.LotteryMapper.selectByPrimaryKey]

3.在application.properties中配置DataSource

spring.datasource.url=jdbc:mysql://192.168.52.166:3306/mysql
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.max-idle=10
spring.datasource.max-wait=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5

4.在application.properties文件中配置

#mapper-locations这个配置参数仅当mapper xml与mapper class不在同一个目录下时有效,一般可以忽略。
mybatis.mapper-locations=classpath:com/xglong/mybatis/generator/mapper/xml/*.xml
#设置自动扫描包别名
mybatis.type-aliases-package=com.xglong.mybatis.generator.mapper

否则运行时会报如下错。

WARN 58344 --- [nio-8080-exec-1] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xglong.mybatis.generator.mapper.LotteryMapper.selectByPrimaryKey]

5.generator自动生成mapper配置

新建generatorConfig.xml文件放入resources目录下,文件内容如下。

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

    <!--数据库驱动jar -->
    <classPathEntry location="/Users/xglong/.m2/repository/mysql/mysql-connector-java/5.1.1/mysql-connector-java-5.1.1.jar" />

    <context id="Tables" targetRuntime="MyBatis3">
        <!--去除注释 -->
        <commentGenerator>
            <property name="suppressAllComments" value="true" />
        </commentGenerator>

        <!--数据库连接 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://192.168.52.166:3306/mysql"
                        userId="root"
                        password="123456">
        </jdbcConnection>
        <!--默认false Java type resolver will always use java.math.BigDecimal if
            the database column is of type DECIMAL or NUMERIC. -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!-- ************************* targetProject 最好使用相对路径,否则会报错(Project does not exist) **************** -->

        <!--生成实体类 指定包名 以及生成的地址 (可以自定义地址,但是路径不存在不会自动创建 使用Maven生成在target目录下,会自动创建) -->
        <javaModelGenerator targetPackage="com.xglong.mybatis.generator.model"
                            targetProject="src/main/java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!--生成SQLMAP文件 -->
        <sqlMapGenerator targetPackage="com.xglong.mybatis.generator.mapper.xml"
                         targetProject="src/main/java">
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
        <!--生成Dao文件 可以配置 type="XMLMAPPER"生成xml的dao实现 context id="DB2Tables" 修改targetRuntime="MyBatis3" -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.xglong.mybatis.generator.mapper"
                             targetProject="src/main/java">
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>

        <!--对应数据库表 mysql可以加入主键自增 字段命名 忽略某字段等 -->
        <table tableName="lottery" domainObjectName="Lottery"
               enableCountByExample="false" enableUpdateByExample="false"
               enableDeleteByExample="false" enableSelectByExample="false"
               selectByExampleQueryId="false" />

    </context>
</generatorConfiguration>

注:classPathEntry中的location属性,要与第一步引入的mysql-connector-java包一致。

6.在Intellij IDEA添加一个“Run运行”选项,使用maven运行mybatis-generator-maven-plugin插件

点击 菜单run中Edit Configurations,选择maven,点击+号,在Command line中输入:mybatis-generator:generate -e

配置好后点ok,在运行按钮前的选择框中选择刚刚的配置,点运行按钮自动生成代码。

注:每次点击都会生成新的文件,*mapper.xml会重复插入。

7.Controller配置

@MapperScan(basePackages = {"com.xglong.mybatis.generator"})

注:在Controller中需要通过@MapperScan来配置扫描路径,basepackages必须是尽可能靠近*Mapper.java类的目录,如果basePackages = {"com.xglong"},运行时会报如下错。

[nio-8080-exec-1] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xglong.service.LotteryService.selectByPrimaryKey]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值