Mybatis 使用
自动生成代码
maven形式
在
pom.xml
添加依赖1
2
3
4
5
6
7
8
9
10<dependencies>
...
<!--Mybatis Mapper代码生成用-->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.6</version>
</dependency>
...
</dependencies>在
pom.xml
添加插件1
2
3
4
5
6
7
8
9
10
11
12
13<plugins>
<!--mybatis生成代码插件-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.6</version>
<!--指定配置文件路径-->
<configuration>
<overwrite>true</overwrite>
<configurationFile>path/generactorConfig.xml</configurationFile>
</configuration>
</plugin>
</plugins>配置
generactorConfig.xml
文件,改配置来源Mybatis系列—Mybatis插件使用(自动生成Mapper,分页)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<generatorConfiguration>
<!-- 指定oracle/mysql的驱动包的路径 千万别放中文路径下 -->
<classPathEntry location="C://Users//Administrator//.DataGrip2018.1//config//jdbc-drivers//MySQL Connector//J//5.1.46//mysql-connector-java-5.1.46.jar"/>
<!-- 配置数据源和生成的代码所存放的位置 -->
<!-- targetRuntime="MyBatis3" 生成条件查询等 -->
<context id="testTable" targetRuntime="MyBatis3Simple">
<!--设置生成的Java文件的编码格式-->
<property name="javaFileEncoding" value="UTF-8"></property>
<!--格式化java代码-->
<property name="javaFormatter" value="org.mybatis.generator.api.dom.DefaultJavaFormatter"></property>
<!--格式化xml代码-->
<property name="xmlFormatter" value="org.mybatis.generator.api.dom.DefaultXmlFormatter"></property>
<!--javaBean 实现序列化接口-->
<plugin type="org.mybatis.generator.plugins.SerializablePlugin"></plugin>
<!--javaBean生成toString() 方法-->
<plugin type="org.mybatis.generator.plugins.ToStringPlugin" />
<commentGenerator>
<!--生成代码时,是否生成注释 true:不 false:是-->
<property name="suppressAllComments" value="true"></property>
</commentGenerator>
<!--数据库配置-->
<jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://192.168.204.182:3306/manage?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=UTC" userId="root" password="lfadmin"></jdbcConnection>
<!--
java类型处理器
用于处理DB中的类型到Java中的类型,默认使用JavaTypeResolverDefaultImpl;
注意一点,默认会先尝试使用Integer,Long,Short等来对应DECIMAL和 NUMERIC数据类型;
-->
<javaTypeResolver type="org.mybatis.generator.internal.types.JavaTypeResolverDefaultImpl">
<property name="forceBigDecimals" value="false"></property>
</javaTypeResolver>
<!--生成实体-->
<javaModelGenerator targetPackage="com.willson.facade.pojo.plot" targetProject="../facade/src/main/java">
<property name="enableSubPackages" value="true"/>
</javaModelGenerator>
<!--生成mapper.xml文件-->
<sqlMapGenerator targetPackage="plot" targetProject="src/main/resources/mapper">
<property name="enableSubPackages" value="true"></property>
</sqlMapGenerator>
<!--生成dao接口-->
<javaClientGenerator type="XMLMAPPER" targetPackage="com.willson.service.mapper.plot" targetProject="src/main/java">
<property name="enableSubPackages" value="true"></property>
</javaClientGenerator>
<!--为哪些表生成代码 tableName=表名字 domainObjectName 生成实体类名字-->
<table tableName="tb_plot_herbaceous_plant" domainObjectName="herbaceousPlant" />
</context>
</generatorConfiguration>最后在右侧
maven projects->plugins->mybatis-generator:generate
运行就会生成了
##注解式
基本格式,接口加@Mapper
1 | package com.xhzg.xhzg.mapper; |
常用注解
1 | //查询语 |
实现插入数据后返回自增id:
1 |
|
Options(useGeneratedKeys = true, keyProperty = "自增id")
用于返回自增id,返回后id读取直接从传入的
PictureDetail
类里获取即可,不是通过返回值接收
实现where if 查询语句
通过 @SelectProvider(type
实现
1 |
|
查询provider类
1 | public class Provider { |
xml式
Mybatis Generator Example
1.OR条件的使用
1 | --?=keyword |
等效于
1 | TblTestExample example = new TblTestExample(); |
问题
Mapper method 'com.xxx' has an unsupported return type: class com.xxx.User
问题原因是mapper 中insert只能返回int,因此修改返回类型即可nested exception is org.apache.ibatis.builder.BuilderException: Error invoking SqlProvider method (com.xhzg.xhzg.mapper.Provider.queryflowerByParam). Cannot invoke a method that holds named argument(@Param) using a specifying parameterObject. In this case, please specify a 'java.util.Map' object.
错误解决:指定@param1
2
3
4//provider知道@param
public String queryflowerByParam(int classid) {}
List<FlowerInfoEntiy> selectFlowerinfo(int classid);
详情
generactorConfig.xml
文件
1 |
|