MyBatis是一个流行的ORM框架,可以让开发人员通过简单的配置实现Java对象与关系型数据库之间的映射。它支持自动建表,在配置文件中添加一些参数,就可以让MyBatis自动创建数据库表结构。下面是实现自动建表的步骤:
1. 添加自动建表所需的依赖
在pom.xml文件中添加如下依赖:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.7</version>
</dependency>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.0</version>
</dependency>
其中,mybatis是MyBatis框架本身的依赖,mybatis-generator-core是自动生成代码所需的依赖。
2. 配置自动建表参数
在MyBatis的配置文件中添加如下配置:
<generatorConfiguration>
<context id="default" targetRuntime="MyBatis3">
<!-- 数据库链接URL、用户名和密码 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test"
userId="root"
password="root">
</jdbcConnection>
<!-- 指定生成实体类的位置 -->
<javaModelGenerator targetPackage="cn.nfy.test.model"
targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- 指定生成Mapper.xml的位置 -->
<sqlMapGenerator targetPackage="cn.nfy.test.sql"
targetProject="src/main/resources">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- 指定生成Mapper接口的位置 -->
<javaClientGenerator targetPackage="cn.nfy.test.dao"
type="XMLMAPPER"
targetProject="src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 指定要自动生成表的名称 -->
<table tableName="user">
<generatedKey column="id" sqlStatement="mysql" identity="true" />
</table>
</context>
</generatorConfiguration>
其中,包含了以下配置:
- datasource参数:JDBC链接信息,包括driverClass(JDBC驱动类)、connectionURL(数据库链接地址)、userId(数据库用户名)和password(数据库密码)。
- javaModelGenerator参数:自动生成实体类的位置,包括targetPackage(包名)和targetProject(工程路径)。
- sqlMapGenerator参数:自动生成Mapper.xml文件的位置,包括targetPackage(包名)和targetProject(工程路径)。
- javaClientGenerator参数:自动生成Mapper接口的位置,包括targetPackage(包名)和targetProject(工程路径)。
- table参数:要自动建表的表名,同时指定主键信息。
此时,我们可以使用MyBatis Generator自动生成实体类、Mapper接口和Mapper.xml文件。
3. 自动生成表结构
在IntelliJ IDEA中打开终端,执行如下命令:
java -jar mybatis-generator-core-1.4.0.jar -configfile generatorConfig.xml -overwrite
其中,mybatis-generator-core-1.4.0.jar是MyBatis Generator的jar包,generatorConfig.xml是上一步中定义的配置文件的路径,-overwrite表示如果已经存在文件,覆盖原文件。
执行命令后,MyBatis Generator会连接数据库并生成相关文件。
示例1:使用MyBatis Generator自动生成表结构
下面,我们以MySQL数据库为例,演示如何使用MyBatis Generator自动生成表结构。
首先,在MySQL中创建名为test的数据库:
CREATE DATABASE test;
然后,在test数据库中创建名为user的表:
USE test;
CREATE TABLE user (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
age INT UNSIGNED NOT NULL DEFAULT 0,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
接着,在IntelliJ IDEA中创建Maven项目,添加上述依赖,并在resource目录下创建mybatis-config.xml和generatorConfig.xml文件,将上述代码粘贴到对应的文件中。
在IntelliJ IDEA的终端中执行如下命令:
java -jar mybatis-generator-core-1.4.0.jar -configfile generatorConfig.xml -overwrite
MyBatis Generator会连接MySQL数据库,并自动生成实体类、Mapper接口和Mapper.xml文件。
最后,在IDEA中右键单击项目,选择"Maven"->"Reload Project",重新加载项目,就可以在src/main/java和src/main/resources目录下,看到自动生成的文件。
示例2:使用MyBatis Plus自动生成表结构
除了使用MyBatis Generator自动生成表结构外,我们还可以使用第三方工具MyBatis Plus来实现自动建表的功能。MyBatis Plus是基于MyBatis的增强工具,能够减少代码量、提高代码可读性,同时支持自动建表、分页查询等功能。
下面,我们以Spring Boot项目为例,演示如何使用MyBatis Plus实现自动建表:
首先,在pom.xml文件中添加如下依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.1</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
其中,mybatis-plus-boot-starter是MyBatis Plus的Spring Boot集成依赖,druid-spring-boot-starter是阿里开源的数据库连接池依赖。
然后,在application.properties或application.yml文件中添加如下MySQL数据库的配置信息:
spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.initialSize=5
spring.datasource.minIdle=5
spring.datasource.maxActive=20
spring.datasource.filters=stat,wall
spring.datasource.validationQuery=SELECT 1
spring.datasource.testWhileIdle=true
spring.datasource.testOnBorrow=false
spring.datasource.testOnReturn=false
spring.datasource.poolPreparedStatements=true
spring.datasource.maxPoolPreparedStatementPerConnectionSize=20
spring.datasource.connectionProperties=druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000
mybatis-plus.global-config.db-config.id-type=auto
mybatis-plus.global-config.db-config.insert-strategy=NOT_NULL
mybatis-plus.global-config.db-config.update-strategy=NOT_NULL
其中,包含了如下配置:
- spring.datasource参数:MySQL数据库的链接信息。
- mybatis-plus.global-config参数:MyBatis Plus的自动建表配置,其中id-type=auto表示主键自增。
- mybatis-plus.global-config.db-config参数:MyBatis Plus的自动建表配置,其中insert-strategy和update-strategy表示插入和更新策略为非空列。
最后,在Java类中定义实体类和Mapper接口:
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName(value = "user")
public class User implements Serializable {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
}
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
其中,@TableName注解表示数据表名为user,@TableId注解表示id为主键且自增。
此时,MyBatis Plus会根据实体类生成对应的表结构,同时也会自动生成Mapper接口和Mapper.xml文件。可以在MySQL Workbench中查看生成的表结构。
至此,我们已经完成了使用MyBatis Plus自动建表的全部操作。
参考资料:
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis自动建表的实现方法 - Python技术站