位置: IT常识 - 正文

Mybatis 入门实战(1)--简介(mybatis入门菜鸟教程)

编辑:rootadmin
1、Mybatis 是什么 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain ... 1、Mybatis 是什么

推荐整理分享Mybatis 入门实战(1)--简介(mybatis入门菜鸟教程),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mybatis?,mybatis?,mybatis基本步骤,mybatis?,mybatis入门案例,mybatis操作步骤,mybatis操作步骤,mybatis入门菜鸟教程,内容如对您有帮助,希望把文章链接给更多的朋友!

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

2、Mybatis 配置

MyBatis 的配置文件包含了会深深影响 MyBatis 行为的设置和属性信息。 配置文档的顶层结构如下:

configuration(配置)properties(属性)settings(设置)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environments(环境配置)environment(环境变量)transactionManager(事务管理器)dataSource(数据源)databaseIdProvider(数据库厂商标识)mappers(映射器)2.1、属性(properties)

这些属性可以在外部进行配置,并可以进行动态替换。你既可以在典型的 Java 属性文件中配置这些属性,也可以在 properties 元素的子元素中设置。例如:

<properties resource="org/mybatis/example/config.properties"> <property name="username" value="root"/> <property name="password" value="123456"/></properties>

设置好的属性可以在整个配置文件中用来替换需要动态配置的属性值。

如果一个属性在不只一个地方进行了配置,那么,MyBatis 将按照下面的顺序来加载:

首先读取在 properties 元素体内指定的属性。然后根据 properties 元素中的 resource 属性读取类路径下属性文件,或根据 url 属性指定的路径读取属性文件,并覆盖之前读取过的同名属性。最后读取作为方法参数传递的属性,并覆盖之前读取过的同名属性。2.2、设置(settings)

这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。 下表描述了设置中各项设置的含义、默认值等。

设置名描述有效值默认值cacheEnabled全局性地开启或关闭所有映射器配置文件中已配置的任何缓存。true | falsetruelazyLoadingEnabled延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态。true | falsefalseaggressiveLazyLoading开启时,任一方法的调用都会加载该对象的所有延迟加载属性。 否则,每个延迟加载属性会按需加载(参考lazyLoadTriggerMethods)。true | falsefalse (在 3.4.1 及之前的版本中默认为 true)multipleResultSetsEnabled是否允许单个语句返回多结果集(需要数据库驱动支持)。true | falsetrueuseColumnLabel使用列标签代替列名。实际表现依赖于数据库驱动,具体可参考数据库驱动的相关文档,或通过对比测试来观察。true | falsetrueuseGeneratedKeys允许 JDBC 支持自动生成主键,需要数据库驱动支持。如果设置为 true,将强制使用自动生成主键。尽管一些数据库驱动不支持此特性,但仍可正常工作(如 Derby)。true | falseFalseautoMappingBehavior指定 MyBatis 应如何自动映射列到字段或属性。 NONE 表示关闭自动映射;PARTIAL 只会自动映射没有定义嵌套结果映射的字段。 FULL 会自动映射任何复杂的结果集(无论是否嵌套)。NONE, PARTIAL, FULLPARTIALautoMappingUnknownColumnBehavior指定发现自动映射目标未知列(或未知属性类型)的行为。

NONE: 不做任何反应WARNING: 输出警告日志('org.apache.ibatis.session.AutoMappingUnknownColumnBehavior'的日志等级必须设置为WARN)FAILING: 映射失败 (抛出SqlSessionException)NONE, WARNING, FAILINGNONEdefaultExecutorType配置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语句(PreparedStatement); BATCH 执行器不仅重用语句还会执行批量更新。SIMPLE REUSE BATCHSIMPLEdefaultStatementTimeout设置超时时间,它决定数据库驱动等待数据库响应的秒数。任意正整数未设置 (null)defaultFetchSize为驱动的结果集获取数量(fetchSize)设置一个建议值。此参数只可以在查询设置中被覆盖。任意正整数未设置 (null)defaultResultSetType指定语句默认的滚动策略。(新增于 3.5.2)FORWARD_ONLY | SCROLL_SENSITIVE | SCROLL_INSENSITIVE | DEFAULT(等同于未设置)未设置 (null)safeRowBoundsEnabled是否允许在嵌套语句中使用分页(RowBounds)。如果允许使用则设置为 false。true | falseFalsesafeResultHandlerEnabled是否允许在嵌套语句中使用结果处理器(ResultHandler)。如果允许使用则设置为 false。true | falseTruemapUnderscoreToCamelCase是否开启驼峰命名自动映射,即从经典数据库列名 A_COLUMN 映射到经典 Java 属性名 aColumn。true | falseFalselocalCacheScopeMyBatis 利用本地缓存机制(Local Cache)防止循环引用和加速重复的嵌套查询。 默认值为 SESSION,会缓存一个会话中执行的所有查询。 若设置值为 STATEMENT,本地缓存将仅用于执行语句,对相同 SqlSession 的不同查询将不会进行缓存。SESSION | STATEMENTSESSIONjdbcTypeForNull当没有为参数指定特定的 JDBC 类型时,空值的默认 JDBC 类型。 某些数据库驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER。JdbcType 常量,常用值:NULL、VARCHAR 或 OTHER。OTHERlazyLoadTriggerMethods指定对象的哪些方法触发一次延迟加载。用逗号分隔的方法列表。equals,clone,hashCode,toStringdefaultScriptingLanguage指定动态 SQL 生成使用的默认脚本语言。一个类型别名或全限定类名。org.apache.ibatis.scripting.xmltags.XMLLanguageDriverdefaultEnumTypeHandler指定 Enum 使用的默认TypeHandler。(新增于 3.4.5)一个类型别名或全限定类名。org.apache.ibatis.type.EnumTypeHandlercallSettersOnNulls指定当结果集中值为 null 的时候是否调用映射对象的 setter(map 对象时为 put)方法,这在依赖于 Map.keySet() 或 null 值进行初始化时比较有用。注意基本类型(int、boolean 等)是不能设置成 null 的。true | falsefalsereturnInstanceForEmptyRow当返回行的所有列都是空时,MyBatis默认返回null。 当开启这个设置时,MyBatis会返回一个空实例。 请注意,它也适用于嵌套的结果集(如集合或关联)。(新增于 3.4.2)true | falsefalselogPrefix指定 MyBatis 增加到日志名称的前缀。任何字符串未设置logImpl指定 MyBatis 所用日志的具体实现,未指定时将自动查找。SLF4J | LOG4J(3.5.9 起废弃) | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING未设置proxyFactory指定 Mybatis 创建可延迟加载对象所用到的代理工具。CGLIB (3.5.10 起废弃) | JAVASSISTJAVASSIST (MyBatis 3.3 以上)vfsImpl指定 VFS 的实现自定义 VFS 的实现的类全限定名,以逗号分隔。未设置useActualParamName允许使用方法签名中的名称作为语句参数名称。 为了使用该特性,你的项目必须采用 Java 8 编译,并且加上-parameters选项。(新增于 3.4.1)true | falsetrueconfigurationFactory指定一个提供Configuration实例的类。 这个被返回的 Configuration 实例用来加载被反序列化对象的延迟加载属性值。 这个类必须包含一个签名为static Configuration getConfiguration()的方法。(新增于 3.2.3)一个类型别名或完全限定类名。未设置shrinkWhitespacesInSql从SQL中删除多余的空格字符。请注意,这也会影响SQL中的文字字符串。 (新增于 3.5.5)true | falsefalsedefaultSqlProviderType指定一个拥有 provider 方法的 sql provider 类 (新增于 3.5.6). 这个类适用于指定 sql provider 注解上的type(或value) 属性(当这些属性在注解中被忽略时)。 (e.g.@SelectProvider)类型别名或者全限定名未设置nullableOnForEach为 'foreach' 标签的 'nullable' 属性指定默认值。(新增于 3.5.9)true | falsefalseargNameBasedConstructorAutoMapping当应用构造器自动映射时,参数名称被用来搜索要映射的列,而不再依赖列的顺序。(新增于 3.5.10)true | falsefalse2.3、类型别名(typeAliases)

类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。例如:

<typeAliases> <typeAlias alias="Author" type="domain.blog.Author"/> <typeAlias alias="Blog" type="domain.blog.Blog"/></typeAliases>2.4、类型处理器(typeHandlers)

MyBatis 在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时, 都会用类型处理器将获取到的值以合适的方式转换成 Java 类型。Mybatis 内置了默认的类型处理器,如果不满足需求,还可以自定义类型处理器;具体做法为:实现org.apache.ibatis.type.TypeHandler接口, 或继承一个很便利的类org.apache.ibatis.type.BaseTypeHandler, 并且可以(可选地)将它映射到一个 JDBC 类型。

2.5、对象工厂(objectFactory)

每次 MyBatis 创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成实例化工作。 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认无参构造方法,要么通过存在的参数映射来调用带有参数的构造方法。 如果想覆盖对象工厂的默认行为,可以通过创建自己的对象工厂来实现;具体做法为:继承org.apache.ibatis.reflection.factory.DefaultObjectFactory类并覆盖相应的方法。

2.6、插件(plugins)

MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:

Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)ParameterHandler (getParameterObject, setParameters)ResultSetHandler (handleResultSets, handleOutputParameters)StatementHandler (prepare, parameterize, batch, update, query)

通过 MyBatis 提供的强大机制,使用插件是非常简单的,只需实现 Interceptor 接口,并指定想要拦截的方法签名即可。

2.7、环境配置(environments)

MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者想在具有相同 Schema 的多个生产数据库中使用相同的 SQL 映射。还有许多类似的使用场景。

Mybatis 入门实战(1)--简介(mybatis入门菜鸟教程)

不过要记住:尽管可以配置多个环境,但每个 SqlSessionFactory 实例只能选择一种环境。

所以,如果你想连接两个数据库,就需要创建两个 SqlSessionFactory 实例,每个数据库对应一个。

2.7.1、事务管理器(transactionManager)

在 MyBatis 中有两种类型的事务管理器(也就是 type="[JDBC|MANAGED]"):

JDBC – 这个配置直接使用了 JDBC 的提交和回滚功能,它依赖从数据源获得的连接来管理事务作用域。MANAGED – 这个配置几乎没做什么。它从不提交或回滚一个连接,而是让容器来管理事务的整个生命周期(比如 JEE 应用服务器的上下文)。

注:如果你正在使用 Spring + MyBatis,则没有必要配置事务管理器,因为 Spring 模块会使用自带的管理器来覆盖前面的配置。

2.7.2、数据源(dataSource)

dataSource 元素使用标准的 JDBC 数据源接口来配置 JDBC 连接对象的资源。

有三种内建的数据源类型(也就是 type="[UNPOOLED|POOLED|JNDI]"):

UNPOOLED– 这个数据源的实现会每次请求时打开和关闭连接。虽然有点慢,但对那些数据库连接可用性要求不高的简单应用程序来说,是一个很好的选择。 性能表现则依赖于使用的数据库,对某些数据库来说,使用连接池并不重要,这个配置就很适合这种情形。

POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并发 Web 应用快速响应请求。

JNDI– 这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的数据源引用。

2.8、数据库厂商标识(databaseIdProvider)

MyBatis 可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的databaseId属性。 MyBatis 会加载带有匹配当前数据库databaseId属性和所有不带databaseId属性的语句。 如果同时找到带有databaseId和不带databaseId的相同语句,则后者会被舍弃。databaseIdProvider 对应的 DB_VENDOR 实现会将 databaseId 设置为DatabaseMetaData#getDatabaseProductName()返回的字符串。 由于通常情况下这些字符串都非常长,而且相同产品的不同版本会返回不同的值,你可能想通过设置属性别名来使其变短:

<databaseIdProvider type="DB_VENDOR"> <property name="SQL Server" value="sqlserver"/> <property name="DB2" value="db2"/> <property name="Oracle" value="oracle" /></databaseIdProvider>2.9、映射器(mappers)

我们需要告诉 MyBatis 到哪里去找SQL 映射语句。 在自动查找资源方面,Java 并没有提供一个很好的解决方案,所以最好的办法是直接告诉 MyBatis 到哪里去找映射文件。 你可以使用相对于类路径的资源引用,或完全限定资源定位符(包括file:///形式的 URL),或类名和包名等。例如:

<!-- 使用相对于类路径的资源引用 --><mappers> <mapper resource="org/mybatis/builder/AuthorMapper.xml"/> <mapper resource="org/mybatis/builder/BlogMapper.xml"/></mappers><!-- 使用完全限定资源定位符(URL) --><mappers> <mapper url="file:///var/mappers/AuthorMapper.xml"/> <mapper url="file:///var/mappers/BlogMapper.xml"/></mappers><!-- 使用映射器接口实现类的完全限定类名 --><mappers> <mapper class="org.mybatis.builder.AuthorMapper"/> <mapper class="org.mybatis.builder.BlogMapper"/></mappers><!-- 将包内的映射器接口全部注册为映射器 --><mappers> <package name="org.mybatis.builder"/></mappers>3、作用域(Scope)和生命周期3.1、对象生命周期和依赖注入框架

依赖注入框架可以创建线程安全的、基于事务的 SqlSession 和映射器,并将它们直接注入到你的 bean 中,因此可以直接忽略它们的生命周期。 如果对如何通过依赖注入框架使用 MyBatis 感兴趣,可以研究一下 MyBatis-Spring 或 MyBatis-Guice 两个子项目。

3.2、SqlSessionFactoryBuilder

这个类可以被实例化、使用和丢弃,一旦创建了 SqlSessionFactory,就不再需要它了。 因此 SqlSessionFactoryBuilder 实例的最佳作用域是方法作用域(也就是局部方法变量)。 你可以重用 SqlSessionFactoryBuilder 来创建多个 SqlSessionFactory 实例,但最好还是不要一直保留着它,以保证所有的 XML 解析资源可以被释放给更重要的事情。

3.2、SqlSessionFactory

SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例。 使用 SqlSessionFactory 的最佳实践是在应用运行期间不要重复创建多次,多次重建 SqlSessionFactory 被视为一种代码“坏习惯”。因此 SqlSessionFactory 的最佳作用域是应用作用域。 有很多方法可以做到,最简单的就是使用单例模式或者静态单例模式。

3.3、SqlSession

每个线程都应该有它自己的 SqlSession 实例。SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。 绝对不能将 SqlSession 实例的引用放在一个类的静态域,甚至一个类的实例变量也不行。 也绝不能将 SqlSession 实例的引用放在任何类型的托管作用域中,比如 Servlet 框架中的 HttpSession。 如果你现在正在使用一种 Web 框架,考虑将 SqlSession 放在一个和 HTTP 请求相似的作用域中。 换句话说,每次收到 HTTP 请求,就可以打开一个 SqlSession,返回一个响应后,就关闭它。

3.4、映射器实例

映射器是一些绑定映射语句的接口。映射器接口的实例是从 SqlSession 中获得的。虽然从技术层面上来讲,任何映射器实例的最大作用域与请求它们的 SqlSession 相同。但方法作用域才是映射器实例的最合适的作用域。 也就是说,映射器实例应该在调用它们的方法中被获取,使用完毕之后即可丢弃。 映射器实例并不需要被显式地关闭。尽管在整个请求作用域保留映射器实例不会有什么问题,但是你很快会发现,在这个作用域上管理太多像 SqlSession 的资源会让你忙不过来。 因此,最好将映射器放在方法作用域内。

更多详细说明请参考官网文档:https://mybatis.org/mybatis-3/zh。

本文链接地址:https://www.jiuchutong.com/zhishi/313206.html 转载请保留说明!

上一篇:dedecms如何设置首页滚动显示?(dedecms配置)

下一篇:DEDECMS技巧:网站评论QQ邮箱实时接收(dedecmsv6)

  • 如何选择游戏试玩项目,参加游戏试玩时需要注意这几点(如何做游戏试玩)

    如何选择游戏试玩项目,参加游戏试玩时需要注意这几点(如何做游戏试玩)

  • 华为电脑浏览器兼容模式怎么设置(华为电脑浏览器怎么翻译英文网页)

    华为电脑浏览器兼容模式怎么设置(华为电脑浏览器怎么翻译英文网页)

  • 饿了么骑手怎么加入的呢(饿了么骑手怎么样)

    饿了么骑手怎么加入的呢(饿了么骑手怎么样)

  • 为什么视频发原图还是不清晰(为什么原视频很清楚发给朋友的不太清楚)

    为什么视频发原图还是不清晰(为什么原视频很清楚发给朋友的不太清楚)

  • 华为手机上方的图标都是什么意思(华为手机上方的小孔是干嘛的)

    华为手机上方的图标都是什么意思(华为手机上方的小孔是干嘛的)

  • 腾讯视频14206.0是怎么回事(腾讯视频14206错误)

    腾讯视频14206.0是怎么回事(腾讯视频14206错误)

  • 抖音名怎么修改第二次(抖音来客怎么改名字)

    抖音名怎么修改第二次(抖音来客怎么改名字)

  • 为什么进不了群(qq为什么进不了群)

    为什么进不了群(qq为什么进不了群)

  • Excel表格中除法公式怎么输(Excel表格中除法怎么弄)

    Excel表格中除法公式怎么输(Excel表格中除法怎么弄)

  • 麦克风阵列和麦克风区别(麦克风阵列和麦克风选哪个)

    麦克风阵列和麦克风区别(麦克风阵列和麦克风选哪个)

  • 淘宝搜索发现怎么删除(淘宝搜索发现怎么永久关闭)

    淘宝搜索发现怎么删除(淘宝搜索发现怎么永久关闭)

  • real原声技术有什么用(real原声音效)

    real原声技术有什么用(real原声音效)

  • oppo手机关不了机一直亮着怎么回事(oppo手机关不了屏幕解决方法)

    oppo手机关不了机一直亮着怎么回事(oppo手机关不了屏幕解决方法)

  • 耳机孔进水变耳机模式咋办(耳机孔进水导致一直处在耳机状态)

    耳机孔进水变耳机模式咋办(耳机孔进水导致一直处在耳机状态)

  • 华为che2tl00是什么型号(华为che2-tl00)

    华为che2tl00是什么型号(华为che2-tl00)

  • qq怎样禁言群里的人(qq群里面怎样禁言)

    qq怎样禁言群里的人(qq群里面怎样禁言)

  • dp75sdi是第几代(亚马逊dp75sdi是第几代)

    dp75sdi是第几代(亚马逊dp75sdi是第几代)

  • iphonex和11pro屏幕一样吗(iphonex和11pro屏幕哪个好)

    iphonex和11pro屏幕一样吗(iphonex和11pro屏幕哪个好)

  • word如何自动编号(word如何自动编号如何承接上一个)

    word如何自动编号(word如何自动编号如何承接上一个)

  • 在计算机工作时内存储器可以存储什么(在计算机工作时,什么给运算器提供计算机所用的数据)

    在计算机工作时内存储器可以存储什么(在计算机工作时,什么给运算器提供计算机所用的数据)

  • mt6755相当于高通哪款(mtkmt6755相当于骁龙多少)

    mt6755相当于高通哪款(mtkmt6755相当于骁龙多少)

  • 金山文档小程序怎么保存(金山文档小程序怎么多人在线编辑一个表格)

    金山文档小程序怎么保存(金山文档小程序怎么多人在线编辑一个表格)

  • 为什么别人打电话过来显示未知(为什么别人打电话打不进来)

    为什么别人打电话过来显示未知(为什么别人打电话打不进来)

  • 拼多多权重是什么意思(拼多多权重是啥意思)

    拼多多权重是什么意思(拼多多权重是啥意思)

  • 苹果实况照片发送方法(苹果实况照片发到微信还动吗)

    苹果实况照片发送方法(苹果实况照片发到微信还动吗)

  • 遇见QQ能上网页打不开的情况该怎么办?(登陆qq网页版手机会有提示吗)

    遇见QQ能上网页打不开的情况该怎么办?(登陆qq网页版手机会有提示吗)

  • 路由器怎么选择连接模式?选择MW300RM路由器模式的方法(穿墙路由器怎么选择)

    路由器怎么选择连接模式?选择MW300RM路由器模式的方法(穿墙路由器怎么选择)

  • 解决前端项目问题,uniapp运行微信开发工具小程序,出现× initialize报错,以及浏览器无法运行(前端项目中遇到的问题,如何解决)

    解决前端项目问题,uniapp运行微信开发工具小程序,出现× initialize报错,以及浏览器无法运行(前端项目中遇到的问题,如何解决)

  • 土地价值计入房产税文件
  • 取得发票与实际业务不符怎么办
  • 工资社保缴纳计算器
  • 企业的筹建期允许有多长?
  • 自然人扣缴系统初次登录怎么设置密码
  • 增值税进项税转出文件
  • 税务局开运费发票需要带什么
  • 何为售后租回
  • 什么是税收筹划风险?税收筹划风险的种类有哪些?
  • 建筑业未开票收入情况说明
  • 应收账款入账金额的确定方法
  • 收到股本的现金怎么做账
  • 企业无形资产摊销表述不正确
  • 年终奖第二年才发怎么计算个税在个税app
  • 合伙企业交个税例题
  • 重庆个人住房房产税申报
  • 成本费用调整法
  • 非上市公司股权转让
  • 代账代税与自行核算申报应从哪几个角度考虑
  • 税金及附加期末结转分录
  • 保险公司赔偿的存货自然灾害损失
  • 如何安装os x
  • office已经激活
  • 含税价什么意思?
  • 微软surfacepro3上市时间
  • excel中怎么截取
  • 上月开的发票会计漏做帐,本月应如何补做账?
  • win11 恢复
  • php基础教程
  • 特许权使用费税前扣除标准
  • 营业利润,利润总额的计算公式是
  • 绿萝可以放卧室吗晚上睡觉对人害吗
  • 开发商自用房产出售成为二手房土地成本
  • 货物品种不太多而数量又相对较大
  • 应收票据终止确认的情形
  • 潜水时看到的鱼
  • 财政总预算会计分为几级
  • 增值税达不到起征点账务处理
  • php实现邮箱验证码
  • vue3 $bus
  • 待摊费用在资产负债表里写在哪
  • 会计分录结转进项怎么算
  • 科技项目经费预算取费细则
  • SQLite教程(四):内置函数
  • mysql版本5.5.x升级到5.6.x步骤分享
  • 交易性金融资产属于什么科目
  • 零申报一定要有员工吗
  • 年金终值系数表值系数
  • 个人所得税房屋贷款扣除比例怎么选
  • sql server触发器实例
  • 成本和入账价值
  • 其他权益工具的公允价值变动计入哪里
  • 投资性房地产转为存货
  • 现金余额不对怎么处理
  • 机动车发票红冲后重新开具
  • 差旅费会计科目怎么做
  • 车辆etc设备
  • 应交税费会计核算
  • 新准则印花税计提会计分录
  • 电汇凭证是什么会计科目
  • win8系统安装软件在桌面找不到
  • win8自启动在哪儿设置
  • 多系统安装方法
  • hyper-v搭建
  • 飞信安卓下载
  • lsass exe
  • 微软商城会员
  • win7找不到启动
  • linux系统怎么弄
  • linux ii
  • linux安装步骤
  • android 实例
  • linux系统中可用于添加用户账号
  • js事件怎么写
  • javascript 进阶篇1 正则表达式,cookie管理,userData
  • android的r
  • python语句查询
  • 广东省电子税务局app下载官网
  • 电子税务局备案财务会计制度
  • 应缴纳资源税税额怎么计算
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设