springboot整合mybatis
项目结构在编译后 src下子级目录和resources下子级目录是同一级的
-
添加依赖
<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.0</version> </dependency> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.7</version> </dependency> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.5</version> <configuration> <configurationFile>generatorConf.xml</configurationFile> <verbose>true</verbose> <overwrite>true</overwrite> </configuration> </plugin>
-
在application.properties文件中配置,配置url时必须配置时区,要不然会报时区错误异常
#数据库相关配置 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.datasource.url=jdbc:mysql://localhost:3306/students?serverTimezone=CST spring.datasource.username=root spring.datasource.password=root
-
使用mbg
-
导入依赖 上面 导入插件 上面
-
配置mbg配置文件 注意得配置jdbc驱动,就是本地的,要不然插件用不了。或者在插件里面配置
这个必须导入,要不然会报Exception getting JDBC Driver
<classPathEntry location="D:\mysql-connector-java-8.0.22.jar"/>
<?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="db.properties"/> <!--MyBatis可以生产两种版本 豪华版:除了CRUD还有大量的查询 targetRuntime="MyBatis3" 简单版:只有CRUD targetRuntime="MyBatis3Simple" --> <classPathEntry location="D:\mysql-connector-java-8.0.22.jar"/> <context id="DB2Tables" targetRuntime="MyBatis3Simple"> <!-- 去掉全部的注释 --> <commentGenerator> <property name="suppressAllComments" value="true"/> </commentGenerator> <!-- 修改数据库连接的属性信息 --> <jdbcConnection driverClass="${spring.datasource.driverClassName}" connectionURL="${mybatis.datasource.url}" userId="${mybatis.datasource.username}" password="${mybatis.datasource.password}"> </jdbcConnection> <!--是否启用 BigDecimal--> <javaTypeResolver> <property name="forceBigDecimals" value="false"/> </javaTypeResolver> <!--JavaBean的生成配置 targetPackage 生成的类的包名 targetProject 生成的类在哪个模块目录下 --> <javaModelGenerator targetPackage="model" targetProject="src\main\java\com\w\springboot"> <property name="enableSubPackages" value="true"/> <property name="trimStrings" value="true"/> </javaModelGenerator> <!--mapper.xml的生成配置 targetPackage 生成的配置文件在哪个包名下 targetProject 生成的文件在哪个模块目录下 --> <sqlMapGenerator targetPackage="com.w.mapper" targetProject="src\main\resources"> <property name="enableSubPackages" value="true"/> </sqlMapGenerator> <!--mapper的生成配置 targetPackage 包名 targetProject 哪个模块目录下 --> <javaClientGenerator type="XMLMAPPER" targetPackage="mapper" targetProject="src\main\java\com\w\springboot"> <property name="enableSubPackages" value="true"/> </javaClientGenerator> <!-- 一个table标签表示一个表 tableName表示表名 domainObjectName表示生成的类名 --> <table tableName="account" domainObjectName="Account"/> </context> </generatorConfiguration>
-
Mapper映射文件存储位置 , 如果都放到src/main/java/mapper下,会有打包问题。所以将mapper.xml文件放到src/main/resources/mapper下就会正确编译。但是还需在application.propertise下配置
mybatis.mapper-locations=classpath:mapper/*.xml
-
如果说是都在src/main/java/mapper下,得需要加上
<!--**/*.xml 在java所有目录下找*.xml--> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources>
-
切记在mapper.xml中namespace要是mapper接口的全类名,就是从同一级下开始,比如说是com.w.mapper.***mapper,如果错了会报找不到接口方法异常org.apache.ibatis.binding.BindingException: Invalid bound statement (not found
-
配置mbg配置文件如果使用了db.properties就上面的引入方式需要放到src/main/resources/目录下,要不然会报找不到配置文件异常
-
如果多次删除又加载mbg注意mapper.xml可能会重复出现代码,会报Result Maps collection already contains value for…BaseResultMap
-
-
如果不使用mbg快速生成
-
Javabean自己写,mapper接口自己写
-
mapper.xml自己写,并且放对位置在pom.xml里的build里面
- 放在src下,与mapper接口放在同一个文件。
<resources> <!-- mapper.xml文件在java目录下 --> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> </resource> </resources>
- 放在resources下,在resources下新建一个mapper文件夹,里边放 *.xml。同时还得在pom.xml里放入
<resources> <!-- mapper.xml文件在resources目录下--> <resource> <directory>src/main/resources</directory> </resource> </resources>
- 不论是1还是2 , 感觉2更好一点,都得在application.properties里面告诉spring boot映射文件的位置
# 1. mapper.xml的位置 mybatis.mapper-locations=com/w/mapper/*.xml # 2. mapper.xml的位置 mybatis.mapper-locations=classpath:mapper/*.xml
-
-
-