java实体类生成mysql表_springboot+mybatis通过实体类自动生成数据库表的方法
前言
本章介绍使用mybatis结合mysql数据库自动根据实体类生成相关的数据库表。
首先引入相关的pom包我这里使用的是springboot2.1.8.RELEASE的版本
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.1.0
com.gitee.sunchenbin.mybatis.actable
mybatis-enhance-actable
1.0.1
mysql
mysql-connector-java
runtime
com.alibaba
druid-spring-boot-starter
1.1.10
org.apache.commons
commons-lang3
3.4
net.sf.json-lib
json-lib
2.4
jdk15
commons-logging
commons-logging
添加数据库配置文件application.properties
application.properties这里是单独配置mybatis自动建表的相关信息。
mybatis.table.auto=update
mybatis.model.pack=com.xxx.xxx.entity//实体类的路径
mybatis.database.type=mysql
mybatis.table.auto=
create:
每次加载hibernate会自动创建表,以后启动会覆盖之前的表,所以这个值基本不用,严重会导致的数据的丢失。
create-drop :
每次加载hibernate时根据model类生成表,但是sessionFactory一关闭,表就自动删除,下一次启动会重新创建。
update:
加载hibernate时根据实体类model创建数据库表,这是表名的依据是@Entity注解的值或者@Table注解的值,sessionFactory关闭表不会删除,且下一次启动会根据实体。
model:
更新结构或者有新的实体类会创建新的表。
validate:
启动时验证表的结构,不会创建表 none:启动时不做任何操作
mybatis.model.pack=com.xxx.xxx.entity//你实体类的路径
个人项目配置文件,非统一,根据项目需求配置
进行生成数据库表相关配置
TestConfig配置文件
import com.alibaba.druid.pool.DruidDataSource;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.config.PropertiesFactoryBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;
@Configuration
@ComponentScan(basePackages = {"com.gitee.sunchenbin.mybatis.actable.manager.*"})//固定的包
public class TestConfig {
//连接数据库配置文件的地址,具体查阅配置文件的结构
@Value("${spring.datasource.druid.driver-class-name}")
private String driver;
//连接数据库配置文件的地址,具体查阅配置文件的结构
@Value("${spring.datasource.druid.url}")
private String url;
//连接数据库配置文件的地址,具体查阅配置文件的结构
@Value("${spring.datasource.druid.username}")
private String username;
//连接数据库配置文件的地址,具体查阅配置文件的结构
@Value("${spring.datasource.druid.password}")
private String password;
@Bean
public PropertiesFactoryBean configProperties() throws Exception{
PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean();
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
propertiesFactoryBean.setLocations(resolver.getResources("classpath*:application.properties"));//classpath*:application.properties是mybatis的生成表配置文件
return propertiesFactoryBean;
}
@Bean
public DruidDataSource dataSource() {
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
dataSource.setMaxActive(30);
dataSource.setInitialSize(10);
dataSource.setValidationQuery("SELECT 1");
dataSource.setTestOnBorrow(true);
return dataSource;
}
@Bean
public DataSourceTransactionManager dataSourceTransactionManager() {
DataSourceTransactionManager dataSourceTransactionManager = new DataSourceTransactionManager();
dataSourceTransactionManager.setDataSource(dataSource());
return dataSourceTransactionManager;
}
@Bean
public SqlSessionFactoryBean sqlSessionFactory() throws Exception{
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSource());
PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
sqlSessionFactoryBean.setMapperLocations(resolver.getResources("classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml"));
sqlSessionFactoryBean.setTypeAliasesPackage("com.xxx.xxx.entity.*");
//上述classpath*:com/gitee/sunchenbin/mybatis/actable/mapping/*/*.xml固定的包路径
//com.xxx.xxx.entity.*替换成你的实体类地址
return sqlSessionFactoryBean;
}
}
MyBatisMapperScannerConfig配置文件
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@AutoConfigureAfter(TestConfig.class)//上面第一点配置文件类
public class MyBatisMapperScannerConfig {
@Bean
public MapperScannerConfigurer mapperScannerConfigurer() throws Exception{
MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
mapperScannerConfigurer.setBasePackage("com.xxx.xxx.mapper.*;com.gitee.sunchenbin.mybatis.actable.dao.*");
mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
//com.xxx.xxx.mapper.*替换成你的mapper地址
//com.gitee.sunchenbin.mybatis.actable.dao.*固定的包
return mapperScannerConfigurer;
}
}
新建实体进行测试
注:@Table(name = “”)及@Column(name = “id”)注解使用,实体类继承BaseModel。
import com.gitee.sunchenbin.mybatis.actable.annotation.Column;
import com.gitee.sunchenbin.mybatis.actable.annotation.Table;
import com.gitee.sunchenbin.mybatis.actable.command.BaseModel;
import com.gitee.sunchenbin.mybatis.actable.constants.MySqlTypeConstant;
@Table(name = "em_t")//新建表数据库表名
public class EmpAttr extends BaseModel{
private static final long serialVersionUID = 5199244153134426433L;
@Column(name = "id",type = MySqlTypeConstant.INT,length = 11,isKey = true,isAutoIncrement = true)
private String id;
@Column(name="ename",type= MySqlTypeConstant.VARCHAR)
private String ename;
@Column(name="sal",type= MySqlTypeConstant.VARCHAR)
private String sal;
@Column(name="job",type= MySqlTypeConstant.VARCHAR)
private String job;
//...省略get,set方法
}
运行项目
会控制台会显示说新建表完成
2020-07-08 11:02:13.895 INFO 48536 — [ main] s.m.a.m.s.SysMysqlCreateTableManagerImpl : 开始创建表:em_t
2020-07-08 11:02:13.983 INFO 48536 — [ main] s.m.a.m.s.SysMysqlCreateTableManagerImpl : 完成创建表:em_t
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.1.8.RELEASE)
2020-07-08 11:02:11.264 INFO 48536 --- [ main] com.qiaoyuantest.www.WwwApplication : Starting WwwApplication on DD-HP with PID 48536 (E:\mysoft\kaifasoft\kaifa_code\idea\myiperf_springboot\target\classes started by DD in E:\mysoft\kaifasoft\kaifa_code\idea\myiperf_springboot)
2020-07-08 11:02:11.266 INFO 48536 --- [ main] com.qiaoyuantest.www.WwwApplication : The following profiles are active: prod
2020-07-08 11:02:12.207 INFO 48536 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Multiple Spring Data modules found, entering strict repository configuration mode!
2020-07-08 11:02:12.208 INFO 48536 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Bootstrapping Spring Data repositories in DEFAULT mode.
2020-07-08 11:02:12.228 INFO 48536 --- [ main] .s.d.r.c.RepositoryConfigurationDelegate : Finished Spring Data repository scanning in 10ms. Found 0 repository interfaces.
2020-07-08 11:02:12.301 INFO 48536 --- [ main] o.s.c.a.ConfigurationClassPostProcessor : Cannot enhance @Configuration bean definition 'myBatisMapperScannerConfig' since its singleton instance has been created too early. The typical cause is a non-static @Bean method with a BeanDefinitionRegistryPostProcessor return type: Consider declaring such methods as 'static'.
2020-07-08 11:02:12.522 INFO 48536 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration' of type [org.springframework.transaction.annotation.ProxyTransactionManagementConfiguration$$EnhancerBySpringCGLIB$$54b62352] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2020-07-08 11:02:12.613 INFO 48536 --- [ main] trationDelegate$BeanPostProcessorChecker : Bean 'redisConfiguration' of type [com.qiaoyuantest.www.config.RedisConfiguration$$EnhancerBySpringCGLIB$$9518fca7] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying)
2020-07-08 11:02:12.651 ERROR 48536 --- [ main] o.a.catalina.core.AprLifecycleListener : An incompatible version [1.2.7] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
2020-07-08 11:02:12.808 ERROR 48536 --- [ main] o.a.catalina.core.AprLifecycleListener : An incompatible version [1.2.7] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
2020-07-08 11:02:12.927 INFO 48536 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8910 (http)
2020-07-08 11:02:12.937 ERROR 48536 --- [ main] o.a.catalina.core.AprLifecycleListener : An incompatible version [1.2.7] of the APR based Apache Tomcat Native library is installed, while Tomcat requires version [1.2.14]
2020-07-08 11:02:12.937 INFO 48536 --- [ main] o.a.coyote.http11.Http11NioProtocol : Initializing ProtocolHandler ["http-nio-8910"]
2020-07-08 11:02:12.944 INFO 48536 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2020-07-08 11:02:12.944 INFO 48536 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.24]
2020-07-08 11:02:13.035 INFO 48536 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2020-07-08 11:02:13.036 INFO 48536 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1732 ms
2020-07-08 11:02:13.623 INFO 48536 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'
2020-07-08 11:02:13.676 INFO 48536 --- [ main] c.g.s.m.a.m.handler.StartUpHandlerImpl : databaseType=mysql,开始执行mysql的处理方法
Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
2020-07-08 11:02:13.829 INFO 48536 --- [ main] com.alibaba.druid.pool.DruidDataSource : {dataSource-1} inited
file类型的扫描
2020-07-08 11:02:13.895 INFO 48536 --- [ main] s.m.a.m.s.SysMysqlCreateTableManagerImpl : 开始创建表:em_t
2020-07-08 11:02:13.983 INFO 48536 --- [ main] s.m.a.m.s.SysMysqlCreateTableManagerImpl : 完成创建表:em_t
2020-07-08 11:02:14.002 INFO 48536 --- [ main] c.q.www.config.RedisConfiguration : 自定义RedisCacheManager加载完成
2020-07-08 11:02:14.826 INFO 48536 --- [ main] o.a.coyote.http11.Http11NioProtocol : Starting ProtocolHandler ["http-nio-8910"]
2020-07-08 11:02:14.849 INFO 48536 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8910 (http) with context path ''
2020-07-08 11:02:14.851 INFO 48536 --- [ main] com.qiaoyuantest.www.WwwApplication : Started WwwApplication in 4.162 seconds (JVM running for 4.863)
此时查看一下数据库表会发现新建有em_t表
新建表就这样完成。
如出现
Error creating bean with name ‘startUpHandlerImpl': Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/apache/commons/lang/ArrayUtils错误
说明pom缺省包或者包不正确
org.apache.commons
commons-lang3
3.4
net.sf.json-lib
json-lib
2.4
jdk15
commons-logging
commons-logging
如需要项目源码或者对代码有疑问的评论留言,下期会动手实现mybatis plus内嵌的CRUD自动增删改查
到此这篇关于springboot+mybatis通过实体类自动生成数据库表的方法的文章就介绍到这了,更多相关springboot mybatis实体类生成数据库表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
java实体类生成mysql表_springboot+mybatis通过实体类自动生成数据库表的方法相关推荐
- java 生成mysql dto_如何根据动态SQL代码自动生成DTO
当前的状况 一般做数据库相关开发, 除非学习, 否则很少有人愿意直接使用JDBC.本来Java代码就比较啰嗦了,而直接用JDBC写代码之啰嗦简直有些令人发狂!所以在实际开发过程中,我们通常都会使用一些 ...
- 小d课堂mysql_小D课堂-SpringBoot 2.x微信支付在线教育网站项目实战_2-6.Mysql逆向工程效率神器之使用IDE自动生成Java实体类...
笔记 6.Mysql逆向工程效率神器之使用IDE自动生成Java实体类 简介:实战使用IDE根据Mysql自动生成java pojo实体类 1.IDEA连接数据库 菜单View→Tool Window ...
- Springboot+Maven+Mybatis-enhance-actable 根据实体类自动更新数据库表和字段
参考文章springboot+mybatis/mybatis-plus根据实体类自动创建数据库表,我在上面加了需要修改的说明 目录 pom.xml application.yml DataSource ...
- Mybatis最入门---代码自动生成(generatorConfig.xml配置)
[一步是咫尺,一步即天涯] 经过前文的叙述,各位看官是不是已经被Mybatis的强大功能给折服了呢?本文我们将介绍一个能够极大提升我们开发效率的插件:即代码自动生成.这里的代码自动生成包括,与数据库一 ...
- java毕业设计免税商品优选购物商城设计mybatis+源码+调试部署+系统+数据库+lw
java毕业设计免税商品优选购物商城设计mybatis+源码+调试部署+系统+数据库+lw java毕业设计免税商品优选购物商城设计mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: ...
- java毕业设计线上办公工作流系统mybatis+源码+调试部署+系统+数据库+lw
java毕业设计线上办公工作流系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计线上办公工作流系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B ...
- java毕业设计我爱短视频管理系统mybatis+源码+调试部署+系统+数据库+lw
java毕业设计我爱短视频管理系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计我爱短视频管理系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B ...
- java毕业设计拾忆鲜花销售系统mybatis+源码+调试部署+系统+数据库+lw
java毕业设计拾忆鲜花销售系统mybatis+源码+调试部署+系统+数据库+lw java毕业设计拾忆鲜花销售系统mybatis+源码+调试部署+系统+数据库+lw 本源码技术栈: 项目架构:B/S ...
- java毕业设计小汽车在线预约维修平台系统设计mybatis+源码+调试部署+系统+数据库+lw
java毕业设计小汽车在线预约维修平台系统设计mybatis+源码+调试部署+系统+数据库+lw java毕业设计小汽车在线预约维修平台系统设计mybatis+源码+调试部署+系统+数据库+lw 本源 ...
最新文章
- 黑客组织利用El Machete窃取全球政府超过100G数据
- “人在旅途”之随想以及旅游指南(travel.msra.cn)简介
- 5G NGC — LMF 定位管理功能
- jquery中对小数进行取整
- 5 秒创建 k8s 集群[转]
- C++ 11 多线程--线程管理
- linux命令使用示例:查看某目录属于哪个分区
- python flask restful入门_Python Flask高级编程之RESTFul API前后端分离精讲
- java生成小图片_JAVA生成缩略小图片类
- Android版:验证手机号码的正则表达式 (转)
- python dataset[trans_python gdal根据图像坐标生成矢量框(含图像坐标转地理坐标)...
- Maven学习总结(22)——Maven常用插件介绍
- _blank开新窗口不符合标准?
- 项目开发中如何提升团队的战力?
- Allegro异型焊盘制作_百度经验
- alert确认后执行_微任务、宏任务、DOM渲染的执行顺序
- mac matlab 模糊,MATLAB 2014a 在Mac OS X yosemite 10.10 Retina显示模糊的解决办法
- 软件技术文档编写_如何编写好的软件技术文档
- 步进电机和步进电机电机驱动器
- acwing1282. 搜索关键词(AC 自动机)
热门文章
- 记第一次生产项目中Flutter接入原生项目遇到的问题
- 使用VSccde上传文件到Git时报错:fatal:Custom certificate bundle not found at path: F:/python错图墩铝?git娴狂球糕减裱镑勒惊/Gi
- 【转】国内手机上网站点大测试
- 实验1 小信号调谐放大器
- PHP类实例教程(二十):PHP类接口的实现接口
- excel的vlookup只匹配出来一部分
- 搭建自己的以图搜图系统(二):深入优化搭建生产级别的图搜系统
- 我的世界java转模组基岩,《我的世界》无模组激光门!瞬间就能粉碎基岩,凋灵也要被秒杀?...
- 计算机组装与维护手写笔记,科学网—计算机技术的简单小结 - 熊伟的博文
- IDEA翻译插件 : Translation 安装及使用 解决Google翻译不能使用【保姆级教学】