文章目录
1 MyBatis Generator简介
2 运行MyBatis Generator
2.1 MBG运行方式
2.2 Maven目标与执行
2.3 MBG插件添加依赖
2.4 pom.XML配置参数
3 编写MBG配置文件
3.1 generatorConfiguration元素
3.2 properties元素--可选
3.3 classPathEntry元素--可选
3.4 context 元素
1 MyBatis Generator简介
MyBatis Generator (MBG) 是MyBatis的代码生成器,其内部关联一张或者多张数据库表,生成可访问表的模块。减轻了开发初期数据库表映射对象生成与配置的工作。
MyBatis Generator可以生成:
生成与表结构匹配的Java POJO。
MyBatis兼容的SQL Map XML文件,并配置简单的CRUD生成SQL。
可选的Java客户端类,例如符合Spring框架的DAO。
[ INFO] Saving file UserDO. java
[ INFO] Saving file UserDOMapper. java
[ INFO] Saving file UserDOMapper. xml
迭代运行MBG时,需要注意的是:
MBG会自动合并同名的XML文件,但是不会覆盖开发人员对XML的自定义修改。
MBG不会合并Java文件,而是选择覆盖现有文件(此处是要特别注意的点,容易导致代码丢失)。
2 运行MyBatis Generator
2.1 MBG运行方式
运行MBG有多种方式,例如通过命令行、Ant、Maven等。本文主要介绍Maven相关配置。
MBG包含一个Maven插件,可以集成到Maven构建中。
< project ... >
< build>
< plugins>
< plugin>
< groupId> org.mybatis.generator groupId>
< artifactId> mybatis-generator-maven-plugin artifactId>
< version> 1.3.7 version>
plugin>
plugins>
build>
project>
当然,事情并非如此简单。
2.2 Maven目标与执行
MBG Maven插件包含一个目标:mybatis-generator:generate,这个目标不是由Maven自动执行,可以通过以下两种方式。 方式1:通过命令行执行目标。
mvn mybatis- generator: generate
方式2:使用标准Maven命令行属性将参数传递给目标。使用该命令,将会运行MBG,覆盖已有的Java文件。
mvn - Dmybatis. generator. overwrite= true mybatis- generator: generate
如果存在连续的环境构建,你可能想要MBG作为Maven构建的一部分自动执行。我们可以将目标配置为自动执行来实现。例如,
< plugin>
< groupId> org.mybatis.generator groupId>
< artifactId> mybatis-generator-maven-plugin artifactId>
< version> 1.3.7 version>
< executions>
< execution>
< id> Generate MyBatis Artifacts id>
< goals>
< goal> generate goal>
goals>
execution>
executions>
plugin>
如上配置,MBG插件绑定到Maven构建的generate-sources阶段,因此它将在编译步骤之前执行。还要注意,MBG会生成Java源文件和XML资源,并将两者放入到构建生成的JAR包中。
2.3 MBG插件添加依赖
当前插件类路径仅包含了MBG自身,如果想要为MBG插件添加JDBC驱动,可以增加dependencies标签。
< plugin>
< groupId> org.mybatis.generator groupId>
< artifactId> mybatis-generator-maven-plugin artifactId>
< version> 1.3.7 version>
< executions>
< execution>
< id> Generate MyBatis Artifacts id>
< goals>
< goal> generate goal>
goals>
execution>
executions>
< dependencies>
< dependency>
< groupId> mysql groupId>
< artifactId> mysql-connector-java artifactId>
< version> 8.0.16 version>
dependency>
dependencies>
plugin>
如果所需的依赖已经包含在项目的依赖项中,则可以使用与插件类路径相关的配置参数。 includeCompileDependencies或includeAllDependencies。
2.4 pom.XML配置参数
所有的参数是可选的,并且大多数有默认值。
configurationFile 表达式:${mybatis.generator.configurationFile}
类型:java.io.File XML配置文件默认存放在${basedir}/src/main/resources/generatorConfig.xml
。
contexts 表达式:${mybatis.generator.contexts}
类型:java.lang.String 用于当前运行的context列表,以逗号分隔。列表中的任何指定id必须与context标签id属性值直接匹配。列表中指定的id在此次运行中是生效的。如果没有指定该参数,默认所有context生效。
jdbcDriver 表达式:${mybatis.generator.jdbcDriver}
类型:java.lang.String 如果指定sqlScript,则这是数据库要用到的标准JDBC驱动名称。
jdbcPassword 表达式:${mybatis.generator.jdbcPassword}
类型:java.lang.String 如果指定sqlScript,则这是数据库密码。
jdbcURL 表达式:${mybatis.generator.jdbcURL}
类型:java.lang.String 如果指定sqlScript,则这是连接数据库的URL。
jdbcUserId 表达式:${mybatis.generator.jdbcUserId}
类型:java.lang.String 如果指定sqlScript,则这是连接到数据库的用户id。
ouputDirectory 表达式:${mybatis.generator.outputDirectory}
类型:java.io.File MBG生成文件的存放目录。只要将配置文件中的targetProject设置为特殊值“MAVEN”(区分大小写),就使用此目录。 默认为${project.build.directory}/generated-sources/mybatis-generator
。 注:MBG配置文件中每个Generator后缀的标签都有targetProject属性。
overwrite 表达式:${mybatis.generator.overwrite}
类型:boolean 如果为true,则如果发现现有Java文件的名称与生成的文件的名称相同,则现有Java文件将被覆盖。如果未指定,并且Java文件已经与生成的文件同名,则MBG会将新生成的Java文件以唯一的名称(例如MyClass.java.1,MyClass.java.2)。 重要提示:MBG将始终合并和覆盖XML文件,不会覆盖开发人员自定义的内容。 默认值:false
sqlScript 表达式:${mybatis.generator.sqlScript}
类型:java.lang.String 生成代码之前要运行的SQL脚本文件的位置。如果为null,则不会运行任何脚本。如果不为null,则还必须提供jdbcDriver, jdbcURL。此外, 如果数据库需要身份验证,则可以提供jdbcUserId和jdbcPassword。 值可以指定为文件系统中的位置,或者如果前缀为“ classpath:”,则指定为构建类路径上的位置。
tableNames 表达式:${mybatis.generator.tableNames}
类型:java.lang.String 如果指定,则这是在当前运行中使用的以逗号分隔的表列表。列表中指定的任何表必须与
配置元素中指定的标准表名完全匹配。仅此列表中指定的表将在此运行中处于活动状态。如果未指定此参数,则所有表都将处于活动状态。
verbose 表达式:${mybatis.generator.verbose}
类型:boolean 如果为true,则MBG会将进度消息写入构建日志。
includeCompileDependencies 表达式:${mybatis.generator.includeCompileDependencies}
类型:boolean 如果为true,则范围为“ compile”,“ provided”和“ system”的依赖项将添加到生成器的类路径中。
includeAllDependencies 表达式:${mybatis.generator.includeAllDependencies}
类型:boolean 如果为true,则具有任何作用域的依赖项将添加到生成器的类路径中。
< plugin>
< groupId> org.mybatis.generator groupId>
< artifactId> mybatis-generator-maven-plugin artifactId>
< version> 1.3.7 version>
< dependencies>
< dependency>
< groupId> org.mybatis.generator groupId>
< artifactId> mybatis-generator-core artifactId>
< version> 1.3.6 version>
dependency>
< dependency>
< groupId> mysql groupId>
< artifactId> mysql-connector-java artifactId>
< version> 8.0.16 version>
dependency>
dependencies>
< executions>
< execution>
< id> Generate MyBatis Artifacts id>
< phase> package phase>
< goals>
< goal> generate goal>
goals>
execution>
executions>
< configuration>
< verbose> true verbose>
< overwrite> true overwrite>
configuration>
plugin>
3 编写MBG配置文件
MBG是通过XML配置文件来驱动的,我们通过配置文件告诉MBG怎样连接数据库、生成什么样的对象以及怎么生成、哪些表通过MBG生成对象。
如果在POM配置了configurationFile属性,则使用指定文件名;否则文件为generatorConfig.xml。
示例:
< generatorConfiguration>
< properties resource = " generatorConfig.properties" > properties>
< classPathEntry location = " ${db.driverLocation}" />
< context id = " MySQLTables" targetRuntime = " MyBatis3" defaultModelType = " flat" >
< commentGenerator>
< property name = " suppressDate" value = " true" />
< property name = " suppressAllComments" value = " true" />
commentGenerator>
< jdbcConnection driverClass = " ${db.driverClassName}"
connectionURL = " ${db.url}"
userId = " ${db.username}"
password = " ${db.password}" >
jdbcConnection>
< javaTypeResolver>
< property name = " forceBigDecimals" value = " false" />
javaTypeResolver>
< javaModelGenerator targetPackage = " com.seckill.dataobject" targetProject = " src/main/java" >
< property name = " constructorBased" value = " true" />
< property name = " trimStrings" value = " true" />
javaModelGenerator>
< sqlMapGenerator targetPackage = " mapping" targetProject = " src/main/resources" > sqlMapGenerator>
< javaClientGenerator type = " XMLMAPPER" targetPackage = " com.seckill.dao" targetProject = " src/main/java" >
javaClientGenerator>
< table tableName = " seckill_user" domainObjectName = " UserDO" enableCountByExample = " false"
enableUpdateByExample = " false" enableDeleteByExample = " false" enableSelectByExample = " false"
selectByExampleQueryId = " false" > table>
< table tableName = " seckill_password" domainObjectName = " UserPasswordDO" enableCountByExample = " false"
enableUpdateByExample = " false" enableDeleteByExample = " false" enableSelectByExample = " false"
selectByExampleQueryId = " false" > table>
context>
generatorConfiguration>
generatorConfig.properties
db.driverLocation=/home/ac/.m2/repository/mysql/mysql-connector-java/8.0.16/mysql-connector-java-8.0.16.jar
db.driverClassName=com.mysql.jdbc.Driver
db.url=jdbc:mysql://127.0.0.1:3306
db.username=root
db.password=123456
3.1 generatorConfiguration元素
MBG配置文件的根元素。文件包含以下文档声明:
子元素可以是properties(0-1)、classPathEntry(0-N)、context(1-N)。
3.2 properties元素–可选
将属性配置到外部文件中,通过properties标签引入。
< properties resource = " generatorConfig.properties" > properties>
3.3 classPathEntry元素–可选
添加类路径到MBG运行的类路径中。当载入JDBC驱动,或者当载入JavaModelGenerator根类校验重写方法时,MBG从这些位置载入类。如果JDBC驱动已经在classpath下,不再需要引入该驱动jar包。
< classPathEntry location = " ${db.driverLocation}" />
3.4 context 元素
指定生成一组对象的环境,例如指定数据库、生成对象和XML位置等。后面的元素都是context的子元素。
< context id = " MySQLTables" targetRuntime = " MyBatis3" defaultModelType = " flat" >
...
context>
其中, defaultModelType属性表示MBG如何生成实体类,flat表示为每张表只生成一个实体类。 targetRuntime用于指定生成代码的运行时环境,默认值为MyBatis3。
(0个或多个) 通常与父元素一起使用。例如,
< property name = " beginningDelimiter" value = " `" />
< property name = " endingDelimiter" value = " `" />
(0个或多个)
(0个或1个) 用于控制注释。
< commentGenerator>
< property name = " suppressDate" value = " true" />
< property name = " suppressAllComments" value = " true" />
commentGenerator>
(1个) 用于指定数据库连接信息,有且只能有一个。下面4个属性中驱动和URL必选,用户名和密码可选。
< jdbcConnection driverClass = " ${db.driverClassName}"
connectionURL = " ${db.url}"
userId = " ${db.username}"
password = " ${db.password}" >
jdbcConnection>
(0个或1个) 用来指定JDBC类型和Java类型如何转换。
< javaTypeResolver>
< property name = " forceBigDecimals" value = " false" />
javaTypeResolver>
forceBigDecimals是可配置属性,可以强制DECIMAL和NUMERIC类型转换为Java的BigDecimal类型,默认为false,一般不需要配置。
(1个) 用于控制生成的实体类。
< javaModelGenerator targetPackage = " com.seckill.dataobject" targetProject = " src/main/java" >
< property name = " enableSubPackages" value = " false" />
< property name = " trimStrings" value = " true" />
< property name = " immutable" value = " false" />
< property name = " constructorBased" value = " true" />
javaModelGenerator>
还有一个属性是rootClass,用于设置所有实体类的基类。
(0个或1个)
< sqlMapGenerator targetPackage = " mapping" targetProject = " src/main/resources" >
< property name = " enableSubPackages" value = " false" />
sqlMapGenerator>
(0个或1个)
< javaClientGenerator type = " XMLMAPPER" targetPackage = " com.seckill.dao" targetProject = " src/main/java" >
< property name = " enableSubPackages" value = " false" />
javaClientGenerator>
(1个或多个) 配置表与POJO类的映射,只有配置的表才能生成实体类和其他文件。
< table tableName = " seckill_user" domainObjectName = " UserDO" enableCountByExample = " false"
enableUpdateByExample = " false" enableDeleteByExample = " false" enableSelectByExample = " false"
selectByExampleQueryId = " false" > table>
table的属性有很多,下面简单介绍其中几个。 generatedKey 属性:指定自动生成主键。 columnRenamingRule 属性:生成列前,对列重命名。 columnOverride 属性:修改数据库列的某些属性。
columnOverride column="detail" jdbcType="VARCHAR"/>
ignoreColumn属性:屏蔽不需要生成的列。
参考文档
http://mybatis.org/generator/index.html
https://blog.csdn.net/u014365133/article/details/78884751
你可能感兴趣的:(MyBatis)
insert into select 主键自增_mybatis拦截器实现主键自动生成
weixin_39521651
insert into select 主键自增 mybatis delete返回值 mybatis insert返回主键 mybatis insert返回对象 mybatis plus insert返回主键 mybatis plus 插入生成id
前言前阵子和朋友聊天,他说他们项目有个需求,要实现主键自动生成,不想每次新增的时候,都手动设置主键。于是我就问他,那你们数据库表设置主键自动递增不就得了。他的回答是他们项目目前的id都是采用雪花算法来生成,因此为了项目稳定性,不会切换id的生成方式。朋友问我有没有什么实现思路,他们公司的orm框架是mybatis,我就建议他说,不然让你老大把mybatis切换成mybatis-plus。mybat
MyBatis 详解
阿贾克斯的黎明
java mybatis
目录目录一、MyBatis是什么二、为什么使用MyBatis(一)灵活性高(二)性能优化(三)易于维护三、怎么用MyBatis(一)添加依赖(二)配置MyBatis(三)创建实体类和接口(四)使用MyBatis一、MyBatis是什么MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。它可以通过简
mybatis 二级缓存失效_Mybatis 缓存原理及失效情况解析
weixin_39844942
mybatis 二级缓存失效
这篇文章主要介绍了Mybatis缓存原理及失效情况解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下1、什么是缓存[Cache]存在内存中的临时数据。将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。2、为什么要使用缓存减少和数据库的交互次
详解mybatis的一二级缓存以及缓存失效原因
仰望天花板
缓存 数据库 mybatis java mysql
数据库的大部分场景下是从磁盘读取,如果数据从内存进行读取,速度较比磁盘要快得多。但因为内存的容量有限,所以一般只会把使用和查询较多的数据缓存起来,以便快速反应,其他使用率不太多的继续存放在磁盘。mybatis分为一级缓存和二级缓存1.一级缓存一级缓存存放在SqlSqeeion上,默认开启1.1pojo@DatapublicclassRole{privateLongid;privateStringr
36. MyBatis如何支持多数据库操作?如何配置不同的数据源?
这孩子叫逆
Mybatis笔记 mybatis 数据库
在许多企业级应用中,可能需要访问多个数据库。MyBatis可以通过配置多个数据源和动态切换数据源来支持多数据库操作。下面介绍如何在MyBatis中配置和使用多个数据源。1.多数据源的基本配置1.1配置多个数据源要支持多个数据源,首先需要在Spring或SpringBoot中配置不同的数据源。假设我们要连接两个数据库db1和db2,可以通过以下步骤进行配置。SpringBoot示例:applicat
MyBatis批量插入大量数据
小黑屋说YYDS
MyBatis java
1.思路分析批量插入这个问题,我们用JDBC操作,其实就是两种思路吧:用一个for循环,把数据一条一条的插入(这种需要开启批处理)。生成一条插入sql,类似这种insertintouser(username,address)values(‘aa’,‘bb’),(‘cc’,‘dd’)…。到底哪种快呢?我们从两方面来考虑这个问题:插入SQL本身执行的效率。网络I/O。先说第一种方案,就是用for循环循
MyBatis 查询数据库_mybatis查询某个库的所有表名(2)
2401_84181942
程序员 mybatis oracle tomcat
标签说明:***``标签**:需要指定namespace属性,表示命名空间,值为mapper接口的全限定名,包括全包名.类名。***``查询标签**:是用来执行数据库的查询操作的:`id`:是和Interface(接口)中定义的方法名称一样的,表示对接口的具体实现方法。`resultType`:是返回的数据类型,也就是开头我们定义的实体类。####2.4.4添加Service服务层实现代码如下:@
5-【JavaWeb】JUnit 单元测试及JUL 日志系统
weixin_44329069
JavaWeb junit 单元测试
1.使用JUnit进行单元测试JUnit是Java中非常流行的单元测试框架,MyBatis与JUnit可以很好地结合,来测试持久层代码的正确性。1.1添加JUnit依赖在使用JUnit之前,需要在pom.xml中引入JUnit依赖。junitjunit4.13.2test1.2单元测试基本结构假设我们要测试UserMapper中的getUserById方法,测试代码如下:importorg.apa
【免费】springboot项目申报管理系统|毕业设计|Javaweb项目
计算机学姐来啦
springboot ssm java spring boot 课程设计 后端 毕设 毕业设计 java-ee
收藏点赞不迷路关注作者有好处编号:springboot375springboot项目申报管理系统开发语言:Java数据库:MySQL技术:Spring+SpringMVC+MyBatis工具:IDEA/Ecilpse、Navicat、Maven1.万字文档展示(部分)2.系统图片展示第5章系统详细设计5.1管理员功能模块的实现5.1.1项目列表如图5.1显示的就是项目列表页面,此页面提供给管理员的
MyBatis系统学习(一)——项目结构及其含义
OEC小胖胖
MyBatis mybatis 学习 web 后端
1.MyBatis简介MyBatis是一款优秀的持久层框架,它通过SQL映射的方式实现Java对数据库操作的映射,既保留了SQL语句的灵活性,也简化了代码的编写。在一个MyBatis项目中,核心部分主要有:配置文件(mybatis-config.xml)映射文件(Mapper.xml)实体类(Entity/POJO)接口类(Mapper接口)MyBatis会话工厂(SqlSessionFactor
MyBatis 如何将 Mapper 接口与其 XML 映射文件关联:深入原理与实现
OEC小胖胖
web后端 mybatis xml java web 后端
MyBatis如何将Mapper接口与其XML映射文件关联:深入原理与实现1.概述MyBatis是一个简单、灵活的持久层框架,它通过SQL语句将Java对象与数据库进行映射。MyBatis支持基于XML和注解的配置方式。在实际开发中,XML映射文件与Mapper接口的关联是MyBatis的核心功能之一。通过这种关联,开发者可以在Mapper接口中定义方法,并在XML文件中编写SQL语句,从而实现数
Mybatis实现员工管理系统
wu1113_
mybatis java maven
文章目录1.案例需求2.编程思路3.案例源码4.小结1.案例需求在上次做的父子模块的maven以及Ajax实现人工管理系统的基础上使用Mybatis实现员工管理系统的增删改查,具体运行效果如下:2.编程思路Mybatis框架的一般执行流程:创建MyBatis配置文件mybatis-config.xml在里面加载数据源、事务等,管理映射文件创建需要的映射文件mapper.xml,用于映射表中列和实体
springboot+mybatisplus实现基本的增删改查以及分页查询。这里使用的是Restful风格包括简单描述Restful是什么
okchan666
spring boot java
先实现springboot+mybatisplus的增删改查接口使用postman测试:第一步创建项目导入依赖:直接给大家了:4.0.0org.springframework.bootspring-boot-starter-parent2.6.6com.okchanspringboot_07_ssmp0.0.1-SNAPSHOT1.8org.springframework.bootspring-b
MyBatis 方法重载的陷阱及解决方案
molashaonian
mybatis 方法重载 异常 方法名相同
在使用MyBatis进行开发时,尤其是使用注解模式(如@Select、@Insert等)时,开发者常常会遇到这样一个问题:为什么我的方法重载不能正常工作?即使在Java中允许方法名相同但参数不同的重载,MyBatis在处理注解的SQL方法时却并不支持这种方式。这篇文章将深入探讨MyBatis的这个特性及如何规避相关的坑。问题背景在标准的Java开发中,方法重载是一种常见的设计模式。方法重载允许我们
Spring Cloud+Spring Boot+Mybatis+Java版电子招标采购系统源码 及 功能清单
Xiaohong0716
mybatis java spring cloud
一、立项管理1、招标立项申请功能点:招标类项目立项申请入口,用户可以保存为草稿,提交。2、非招标立项申请功能点:非招标立项申请入口、用户可以保存为草稿、提交。3、采购立项列表功能点:对草稿进行编辑,驳回的立项编辑,在途流程查看。二、项目管理1、采购计划管理功能点:采购计划新增、编辑、删除2、采购过程管理功能点:查询、维护基准价、组建评审小组、项目答疑澄清、文件费保证金审核、供应商报价维护、查看评审
BindingException: Invalid bound statement (not found)
小卡车555
MyBatis mybatis java mysql
Mybatis出现绑定异常问题的解决org.apache.ibatis.binding.BindingException:Invalidboundstatement(notfound)一般的原因是Mapperinterface和xml文件的定义对应不上,需要检查包名,namespace,函数名称等能否对应上,需要比较细致的对比,我经常就是写错了一两个字母搞的很长时间找不到错误按以下步骤一一执行:1
工程项目管理系统源码与Spring Cloud:实现高效系统管理与二次开发
微服务技术分享
spring cloud java 工程项目管理系统源码
随着企业规模的不断扩大和业务的快速发展,传统的工程项目管理方式已经无法满足现代企业的需求。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,企业需要借助先进的数字化技术进行转型。本文将介绍一款采用SpringCloud+SpringBoot+Mybatis技术框架的工程项目管理系统,该系统涵盖了项目管理、合同管理、预警管理、竣工管理、质量管理等多个方面,通过数据字典、编码管理、用户管理
[附源码]SSM计算机毕业设计游戏账号交易平台JAVA
计算机程序源码
java 游戏 mysql
项目运行环境配置:Jdk1.8+Tomcat7.0+Mysql+HBuilderX(Webstorm也行)+Eclispe(IntelliJIDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:SSM+mybatis+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.ID
Mybatis Mysql
莫夏_b560
1、查询失败或者结果异常andfwbdh=#{fwbdh}更换成andfwbdh=#{fwbdh}
33. MyBatis中的@Param注解如何使用?如何在Mapper接口中传递多个参数?
这孩子叫逆
Mybatis笔记 java mybatis tomcat
在MyBatis中,@Param注解用于将方法参数绑定到SQL语句中的命名参数。它主要用于在Mapper接口中传递多个参数,以便在SQL语句中更方便地引用这些参数。为什么使用@Param注解?在MyBatis中,当Mapper接口的方法只有一个参数时,MyBatis会默认将这个参数的名称绑定为#{parameter},可以直接在SQL语句中引用它。如果方法有多个参数,MyBatis默认使用para
Python+Django毕业设计校园易购二手交易平台(程序+LW+部署)
Python、JAVA毕设程序源码
课程设计 java mysql
项目运行环境配置:Jdk1.8+Tomcat7.0+Mysql+HBuilderX(Webstorm也行)+Eclispe(IntelliJIDEA,Eclispe,MyEclispe,Sts都支持)。项目技术:SSM+mybatis+Maven+Vue等等组成,B/S模式+Maven管理等等。环境需要1.运行环境:最好是javajdk1.8,我们在这个平台上运行的。其他版本理论上也可以。2.ID
Springboot3 整合 Mybatis3
(前程似锦)
mybatis java spring boot
Springboot3整合MybatisSpringboot3整合MybatisSpringboot3整合Mybatis一、导入依赖二、编写配置文件三、定义模型entity实体类四、在启动类上添加注解,表示mapper接口所在位置五、定义mapper接口六、定义mapper.xml映射文件七、service层八、测试一、导入依赖mybatis的必要依赖注意:使用springboot3的话要使用my
mybatis支持json,Spring boot配置
Knight_9
mysql5.7版本以后支持原生json格式,基于Springboot进行配置说明。mybatis支持mysql的json格式mysql-connector,mysql的驱动版本要大于等于5.1.40,否则json字段查询会发生乱码。继承BaseTypeHandler自定义一个json类型处理器,放到一个handler包下,例:packagecom.c.config.handler;importc
【Java】Mybatis Druid连接池配置详细
beautiful_huang
Java
pom.xmlcom.alibabadruid1.0.18.propertiesspring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/mybatis2?characterEncoding=utf-8&useSSL=truespring.da
关于com.baomidou:mybatis-plus-boot-starter:jar:unknown was not found解决办法
波斯CD
mybatis jar java
原型com.baomidoumybatis-plus-boot-starter修改以后解决了com.baomidoumybatis-plus-boot-starter3.5.3.1
MyBatis-Plus 3.5.5的代码生成器 实践【完整代码】
qq_43513957
mybatis
MyBatis-Plus3.5.5的代码生成器实践【完整代码】1.表:要有一个version字段,乐观锁更新。配置拦截器的代码packagecom.example.demo.zmybatisplusGenerator.config;importcom.baomidou.mybatisplus.annotation.DbType;importcom.baomidou.mybatisplus.exte
深入解析 MyBatis:从理论到项目实例
OEC小胖胖
web后端 mybatis java spring web 后端
深入解析MyBatis:从理论到项目实例目录MyBatis概述MyBatis项目结构及作用核心概念详解分页功能的实现与深入剖析动态SQL缓存机制详解与Spring集成常见问题与深入分析完整项目示例总结1.MyBatis概述MyBatis是一个轻量级的持久层框架,使用SQL查询语句来访问数据库。它与Java对象建立映射关系,通过配置文件或注解来管理SQL语句,灵活性高且与数据库操作直接相关,适合需要
MyBatis Plus 实战详解
Aries263
redis 分布式 数据库
一、引言MyBatisPlus(简称MP)是MyBatis的增强工具,旨在简化开发、提高效率。它保留了MyBatis的强大功能,并在其基础上进行了扩展和优化,提供了强大的CRUD操作、配置选项、条件构造器等功能。本文将详细介绍MyBatisPlus的安装、配置、基本操作以及分页和条件查询的使用。二、安装与配置1.添加依赖首先,在Maven项目的pom.xml中添加MyBatisPlus的依赖。以下
在springboot中,利用xml配置mybatis的方法
猪猡猪猡猪
java mybatis mybatis spring boot xml java mysql
前置步骤参考博客:SpringBoot配置Mybatis的两种方式(通过XML配置和通过YML配置文件配置)_Darreni的博客-CSDN博客但按照博客中的关键代码和步骤创建的项目无法启动启动报错:Description:FailedtoconfigureaDataSource:'url’attributeisnotspecif:Reason:Failedtodetermineasuitable
MyBatis 学习笔记(4) 动态SQL
张云飞Vir
1.背景本节讲mybatis应对动态SQL的场景。2.知识动态SQL是指“条件"不固定的SQL,对比于一般的SQL,动态SQL会有一个或者多个条件/参数。比如:场景:查询的时候,如果用户输入了姓名,就按姓名模糊查询;同时又输入了邮箱,就再增加一个条件按姓名+邮箱两个条件查询。传统的拼接SQL很费力,拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。借助功能强大的基于OGNL的
java解析APK
3213213333332132
java apk linux 解析APK
解析apk有两种方法
1、结合安卓提供apktool工具,用java执行cmd解析命令获取apk信息
2、利用相关jar包里的集成方法解析apk
这里只给出第二种方法,因为第一种方法在linux服务器下会出现不在控制范围之内的结果。
public class ApkUtil
{
/**
* 日志对象
*/
private static Logger
nginx自定义ip访问N种方法
ronin47
nginx 禁止ip访问
因业务需要,禁止一部分内网访问接口, 由于前端架了F5,直接用deny或allow是不行的,这是因为直接获取的前端F5的地址。
所以开始思考有哪些主案可以实现这样的需求,目前可实施的是三种:
一:把ip段放在redis里,写一段lua
二:利用geo传递变量,写一段
mysql timestamp类型字段的CURRENT_TIMESTAMP与ON UPDATE CURRENT_TIMESTAMP属性
dcj3sjt126com
mysql
timestamp有两个属性,分别是CURRENT_TIMESTAMP 和ON UPDATE CURRENT_TIMESTAMP两种,使用情况分别如下:
1.
CURRENT_TIMESTAMP
当要向数据库执行insert操作时,如果有个timestamp字段属性设为
CURRENT_TIMESTAMP,则无论这
struts2+spring+hibernate分页显示
171815164
Hibernate
分页显示一直是web开发中一大烦琐的难题,传统的网页设计只在一个JSP或者ASP页面中书写所有关于数据库操作的代码,那样做分页可能简单一点,但当把网站分层开发后,分页就比较困难了,下面是我做Spring+Hibernate+Struts2项目时设计的分页代码,与大家分享交流。
1、DAO层接口的设计,在MemberDao接口中定义了如下两个方法:
public in
构建自己的Wrapper应用
g21121
rap
我们已经了解Wrapper的目录结构,下面可是正式利用Wrapper来包装我们自己的应用,这里假设Wrapper的安装目录为:/usr/local/wrapper。
首先,创建项目应用
&nb
[简单]工作记录_多线程相关
53873039oycg
多线程
最近遇到多线程的问题,原来使用异步请求多个接口(n*3次请求) 方案一 使用多线程一次返回数据,最开始是使用5个线程,一个线程顺序请求3个接口,超时终止返回 缺点 测试发现必须3个接
调试jdk中的源码,查看jdk局部变量
程序员是怎么炼成的
jdk 源码
转自:http://www.douban.com/note/211369821/
学习jdk源码时使用--
学习java最好的办法就是看jdk源代码,面对浩瀚的jdk(光源码就有40M多,比一个大型网站的源码都多)从何入手呢,要是能单步调试跟进到jdk源码里并且能查看其中的局部变量最好了。
可惜的是sun提供的jdk并不能查看运行中的局部变量
Oracle RAC Failover 详解
aijuans
oracle
Oracle RAC 同时具备HA(High Availiablity) 和LB(LoadBalance). 而其高可用性的基础就是Failover(故障转移). 它指集群中任何一个节点的故障都不会影响用户的使用,连接到故障节点的用户会被自动转移到健康节点,从用户感受而言, 是感觉不到这种切换。
Oracle 10g RAC 的Failover 可以分为3种:
1. Client-Si
form表单提交数据编码方式及tomcat的接受编码方式
antonyup_2006
JavaScript tomcat 浏览器 互联网 servlet
原帖地址:http://www.iteye.com/topic/266705
form有2中方法把数据提交给服务器,get和post,分别说下吧。
(一)get提交
1.首先说下客户端(浏览器)的form表单用get方法是如何将数据编码后提交给服务器端的吧。
对于get方法来说,都是把数据串联在请求的url后面作为参数,如:http://localhost:
JS初学者必知的基础
百合不是茶
js函数 js入门基础
JavaScript是网页的交互语言,实现网页的各种效果,
JavaScript 是世界上最流行的脚本语言。
JavaScript 是属于 web 的语言,它适用于 PC、笔记本电脑、平板电脑和移动电话。
JavaScript 被设计为向 HTML 页面增加交互性。
许多 HTML 开发者都不是程序员,但是 JavaScript 却拥有非常简单的语法。几乎每个人都有能力将小的
iBatis的分页分析与详解
bijian1013
java ibatis
分页是操作数据库型系统常遇到的问题。分页实现方法很多,但效率的差异就很大了。iBatis是通过什么方式来实现这个分页的了。查看它的实现部分,发现返回的PaginatedList实际上是个接口,实现这个接口的是PaginatedDataList类的对象,查看PaginatedDataList类发现,每次翻页的时候最
精通Oracle10编程SQL(15)使用对象类型
bijian1013
oracle 数据库 plsql
/*
*使用对象类型
*/
--建立和使用简单对象类型
--对象类型包括对象类型规范和对象类型体两部分。
--建立和使用不包含任何方法的对象类型
CREATE OR REPLACE TYPE person_typ1 as OBJECT(
name varchar2(10),gender varchar2(4),birthdate date
);
drop type p
【Linux命令二】文本处理命令awk
bit1129
linux命令
awk是Linux用来进行文本处理的命令,在日常工作中,广泛应用于日志分析。awk是一门解释型编程语言,包含变量,数组,循环控制结构,条件控制结构等。它的语法采用类C语言的语法。
awk命令用来做什么?
1.awk适用于具有一定结构的文本行,对其中的列进行提取信息
2.awk可以把当前正在处理的文本行提交给Linux的其它命令处理,然后把直接结构返回给awk
3.awk实际工
JAVA(ssh2框架)+Flex实现权限控制方案分析
白糖_
java
目前项目使用的是Struts2+Hibernate+Spring的架构模式,目前已经有一套针对SSH2的权限系统,运行良好。但是项目有了新需求:在目前系统的基础上使用Flex逐步取代JSP,在取代JSP过程中可能存在Flex与JSP并存的情况,所以权限系统需要进行修改。
【SSH2权限系统的实现机制】
权限控制分为页面和后台两块:不同类型用户的帐号分配的访问权限是不同的,用户使
angular.forEach
boyitech
AngularJS AngularJS API angular.forEach
angular.forEach 描述: 循环对obj对象的每个元素调用iterator, obj对象可以是一个Object或一个Array. Iterator函数调用方法: iterator(value, key, obj), 其中obj是被迭代对象,key是obj的property key或者是数组的index,value就是相应的值啦. (此函数不能够迭代继承的属性.)
java-谷歌面试题-给定一个排序数组,如何构造一个二叉排序树
bylijinnan
二叉排序树
import java.util.LinkedList;
public class CreateBSTfromSortedArray {
/**
* 题目:给定一个排序数组,如何构造一个二叉排序树
* 递归
*/
public static void main(String[] args) {
int[] data = { 1, 2, 3, 4,
action执行2次
Chen.H
JavaScript jsp XHTML css Webwork
xwork 写道 <action name="userTypeAction"
class="com.ekangcount.website.system.view.action.UserTypeAction">
<result name="ssss" type="dispatcher">
[时空与能量]逆转时空需要消耗大量能源
comsci
能源
无论如何,人类始终都想摆脱时间和空间的限制....但是受到质量与能量关系的限制,我们人类在目前和今后很长一段时间内,都无法获得大量廉价的能源来进行时空跨越.....
在进行时空穿梭的实验中,消耗超大规模的能源是必然
oracle的正则表达式(regular expression)详细介绍
daizj
oracle 正则表达式
正则表达式是很多编程语言中都有的。可惜oracle8i、oracle9i中一直迟迟不肯加入,好在oracle10g中终于增加了期盼已久的正则表达式功能。你可以在oracle10g中使用正则表达式肆意地匹配你想匹配的任何字符串了。
正则表达式中常用到的元数据(metacharacter)如下:
^ 匹配字符串的开头位置。
$ 匹配支付传的结尾位置。
*
报表工具与报表性能的关系
datamachine
报表工具 birt 报表性能 润乾报表
在选择报表工具时,性能一直是用户关心的指标,但是,报表工具的性能和整个报表系统的性能有多大关系呢?
要回答这个问题,首先要分析一下报表的处理过程包含哪些环节,哪些环节容易出现性能瓶颈,如何优化这些环节。
一、报表处理的一般过程分析
1、用户选择报表输入参数后,报表引擎会根据报表模板和输入参数来解析报表,并将数据计算和读取请求以SQL的方式发送给数据库。
2、
初一上学期难记忆单词背诵第一课
dcj3sjt126com
word english
what 什么
your 你
name 名字
my 我的
am 是
one 一
two 二
three 三
four 四
five 五
class 班级,课
six 六
seven 七
eight 八
nince 九
ten 十
zero 零
how 怎样
old 老的
eleven 十一
twelve 十二
thirteen
我学过和准备学的各种技术
dcj3sjt126com
技术
语言VB https://msdn.microsoft.com/zh-cn/library/2x7h1hfk.aspxJava http://docs.oracle.com/javase/8/C# https://msdn.microsoft.com/library/vstudioPHP http://php.net/manual/en/Html
struts2中token防止重复提交表单
蕃薯耀
重复提交表单 struts2中token
struts2中token防止重复提交表单
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年7月12日 11:52:32 星期日
ht
线性查找二维数组
hao3100590
二维数组
1.算法描述
有序(行有序,列有序,且每行从左至右递增,列从上至下递增)二维数组查找,要求复杂度O(n)
2.使用到的相关知识:
结构体定义和使用,二维数组传递(http://blog.csdn.net/yzhhmhm/article/details/2045816)
3.使用数组名传递
这个的不便之处很明显,一旦确定就是不能设置列值
//使
spring security 3中推荐使用BCrypt算法加密密码
jackyrong
Spring Security
spring security 3中推荐使用BCrypt算法加密密码了,以前使用的是md5,
Md5PasswordEncoder 和 ShaPasswordEncoder,现在不推荐了,推荐用bcrpt
Bcrpt中的salt可以是随机的,比如:
int i = 0;
while (i < 10) {
String password = "1234
学习编程并不难,做到以下几点即可!
lampcy
java html 编程语言
不论你是想自己设计游戏,还是开发iPhone或安卓手机上的应用,还是仅仅为了娱乐,学习编程语言都是一条必经之路。编程语言种类繁多,用途各 异,然而一旦掌握其中之一,其他的也就迎刃而解。作为初学者,你可能要先从Java或HTML开始学,一旦掌握了一门编程语言,你就发挥无穷的想象,开发 各种神奇的软件啦。
1、确定目标
学习编程语言既充满乐趣,又充满挑战。有些花费多年时间学习一门编程语言的大学生到
架构师之mysql----------------用group+inner join,left join ,right join 查重复数据(替代in)
nannan408
right join
1.前言。
如题。
2.代码
(1)单表查重复数据,根据a分组
SELECT m.a,m.b, INNER JOIN (select a,b,COUNT(*) AS rank FROM test.`A` A GROUP BY a HAVING rank>1 )k ON m.a=k.a
(2)多表查询 ,
使用改为le
jQuery选择器小结 VS 节点查找(附css的一些东西)
Everyday都不同
jquery css name选择器 追加元素 查找节点
最近做前端页面,频繁用到一些jQuery的选择器,所以特意来总结一下:
测试页面:
<html>
<head>
<script src="jquery-1.7.2.min.js"></script>
<script>
/*$(function() {
$(documen
关于EXT
tntxia
ext
ExtJS是一个很不错的Ajax框架,可以用来开发带有华丽外观的富客户端应用,使得我们的b/s应用更加具有活力及生命力。ExtJS是一个用 javascript编写,与后台技术无关的前端ajax框架。因此,可以把ExtJS用在.Net、Java、Php等各种开发语言开发的应用中。
ExtJs最开始基于YUI技术,由开发人员Jack
一个MIT计算机博士对数学的思考
xjnine
Math
在过去的一年中,我一直在数学的海洋中游荡,research进展不多,对于数学世界的阅历算是有了一些长进。为什么要深入数学的世界?作为计算机的学生,我没有任何企图要成为一个数学家。我学习数学的目的,是要想爬上巨人的肩膀,希望站在更高的高度,能把我自己研究的东西看得更深广一些。说起来,我在刚来这个学校的时候,并没有预料到我将会有一个深入数学的旅程。我的导师最初希望我去做的题目,是对appe