课程咨询: 400-996-5531 / 投诉建议: 400-111-8989

认识达内从这里开始

认真做教育 专心促就业

学JAVA成都:mybatis - MybatisAutoConfiguration
  • 发布:成都达内
  • 来源:成都达内
  • 时间:2020-03-07 09:44

一. MybatisProperties

在使用 mybatis 时, 还需要对mapper进行配置:

mybatis:

mapper-locations: classpath:mapper/**Mapper.xml

这些配置其实是映射到 mybatis-spring-boot-autoconfigure 包下的 MybatisProperties 文件中的.

@ConfigurationProperties(prefix = MybatisProperties.MYBATIS_PREFIX)

public class MybatisProperties {

public static final String MYBATIS_PREFIX = "mybatis";

/**

* Location of MyBatis xml config file.

*/

private String configLocation;

/**

* Locations of MyBatis mapper files.

*/

private String[] mapperLocations;

/**

* Packages to search type aliases. (Package delimiters are ",; \t\n")

*/

private String typeAliasesPackage;

/**

* Packages to search for type handlers. (Package delimiters are ",; \t\n")

*/

private String typeHandlersPackage;

/**

* Indicates whether perform presence check of the MyBatis xml config file.

*/

private boolean checkConfigLocation = false;

/**

* Execution mode for {@link org.mybatis.spring.SqlSessionTemplate}.

*/

private ExecutorType executorType;

/**

* Externalized properties for MyBatis configuration.

*/

private Properties configurationProperties;

/**

* A Configuration object for customize default settings. If {@link #configLocation}

* is specified, this property is not used.

*/

@NestedConfigurationProperty

private Configuration configuration;

......

}

二. MybatisAutoConfiguration

MybatisAutoConfiguration 是 mybatis-spring-boot-autoconfigure 中的一个配置类.

在这个配置类中, 主要加入了两个组件: SqlSessionFactory 和 SqlSessionTemplate

1. SqlSessionFactory

@Bean

@ConditionalOnMissingBean

public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception {

SqlSessionFactoryBean factory = new SqlSessionFactoryBean();

factory.setDataSource(dataSource);

factory.setVfs(SpringBootVFS.class);

if (StringUtils.hasText(this.properties.getConfigLocation())) {

factory.setConfigLocation(this.resourceLoader.getResource(this.properties.getConfigLocation()));

}

Configuration configuration = this.properties.getConfiguration();

if (configuration == null && !StringUtils.hasText(this.properties.getConfigLocation())) {

configuration = new Configuration();

}

if (configuration != null && !CollectionUtils.isEmpty(this.configurationCustomizers)) {

for (ConfigurationCustomizer customizer : this.configurationCustomizers) {

customizer.customize(configuration);

}

}

factory.setConfiguration(configuration);

if (this.properties.getConfigurationProperties() != null) {

factory.setConfigurationProperties(this.properties.getConfigurationProperties());

}

if (!ObjectUtils.isEmpty(this.interceptors)) {

factory.setPlugins(this.interceptors);

}

if (this.databaseIdProvider != null) {

factory.setDatabaseIdProvider(this.databaseIdProvider);

}

if (StringUtils.hasLength(this.properties.getTypeAliasesPackage())) {

factory.setTypeAliasesPackage(this.properties.getTypeAliasesPackage());

}

if (StringUtils.hasLength(this.properties.getTypeHandlersPackage())) {

factory.setTypeHandlersPackage(this.properties.getTypeHandlersPackage());

}

if (!ObjectUtils.isEmpty(this.properties.resolveMapperLocations())) {

factory.setMapperLocations(this.properties.resolveMapperLocations());

}

return factory.getObject();

}

(从名字可以看出来, SqlSessionFactory 是 SqlSession的一个工厂类. SqlSession 这个类很重要, 里面定义了 数据库的一套增删改查操作的规范.)

MybatisProperties 中的配置会在这个方法中进行解析.

1. 创建了 Configuration 配置类(后面会用到, 这个类也很重要)的实例

2. 通过 factory.getObject() 方法创建了 SqlSessionFactory 类的实例

创建的过程中, 又调用了 protected SqlSessionFactory buildSqlSessionFactory() 方法进行创建, 创建过程比较多, 留给后面在解析.

2. SqlSessionTemplate

@Bean

@ConditionalOnMissingBean

public SqlSessionTemplate sqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {

ExecutorType executorType = this.properties.getExecutorType();

if (executorType != null) {

return new SqlSessionTemplate(sqlSessionFactory, executorType);

} else {

return new SqlSessionTemplate(sqlSessionFactory);

}

}

SqlSessionTemplate 这个类 实现了 SqlSession 接口, 也就是说, 他也有一套 数据库的 增删改查的方法. 先看一下构造过程:

public SqlSessionTemplate(SqlSessionFactory sqlSessionFactory) {

this(sqlSessionFactory, sqlSessionFactory.getConfiguration().getDefaultExecutorType());

}

|

|

\|/

public SqlSessionTemplate(SqlSessionFactory sqlSessionFactory, ExecutorType executorType) {

this(sqlSessionFactory, executorType,

new MyBatisExceptionTranslator(

sqlSessionFactory.getConfiguration().getEnvironment().getDataSource(), true));

}

|

|

\|/

public SqlSessionTemplate(SqlSessionFactory sqlSessionFactory, ExecutorType executorType,

PersistenceExceptionTranslator exceptionTranslator) {

notNull(sqlSessionFactory, "Property 'sqlSessionFactory' is required");

notNull(executorType, "Property 'executorType' is required");

this.sqlSessionFactory = sqlSessionFactory;

this.executorType = executorType;

this.exceptionTranslator = exceptionTranslator;

this.sqlSessionProxy = (SqlSession) newProxyInstance(

SqlSessionFactory.class.getClassLoader(),

new Class[] { SqlSession.class },

new SqlSessionInterceptor());

}

这里初始化了一个很重要的属性: sqlSessionProxy.

sqlSessionProxy 是为 SqlSession 创建了一个代理类, 且代理方法为: SqlSessionInterceptor

看一个 实现了 SqlSession 接口中的 selectOne 方法:

@Override

public T selectOne(String statement, Object parameter) {

return this.sqlSessionProxy. selectOne(statement, parameter);

}

可以看到, 在调用 selectOne 方法的时候, 其实就是调用了 SqlSessionInterceptor 的 invoke 方法.

<  上一篇:成都影视制作培训-如何成为影视后期包装的稀缺人才?
下一篇:成都Java开发工程师:SpringBoot开发的那些趣事儿  >
相关推荐
最新资讯
免费试听课程
  • 全部课程
  • IT课程
  • 设计课程
  • 运营课程
Free courses
最新开班时间
  • 北京
  • 上海
  • 广州
  • 深圳
  • 南京
  • 成都
  • 武汉
  • 西安
  • 青岛
  • 天津
  • 杭州
  • 重庆
  • 哈尔滨
  • 济南
  • 沈阳
  • 合肥
  • 郑州
  • 长春
  • 苏州
  • 长沙
  • 昆明
  • 太原
  • 无锡
  • 石家庄
  • 南宁
  • 佛山
  • 珠海
  • 宁波
  • 保定
  • 呼和浩特
  • 洛阳
  • 烟台
  • 运城
  • 潍坊
  • 开课名称
  • 开班时间
  • 抢座
  • 咨询
  • 开课名称
  • 开班时间
  • 抢座
  • 咨询
    • Java全链路开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 云计算全栈开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 人工智能工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 数据分析与商业智能
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 新媒体电商运营
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 云计算全栈开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 云计算全栈开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 云计算全栈开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 新媒体电商运营
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 云计算全栈开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 新媒体电商运营
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 云计算全栈开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 云计算全栈开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 数据分析与商业智能
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 新媒体电商运营
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 新媒体电商运营
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 云计算全栈开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 新媒体电商运营
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 云计算全栈开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 新媒体电商运营
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 云计算全栈开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • Java全链路开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AGI商业设计变现
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 网络安全工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • C++物联网工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 软件测试工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • AI大模型全栈工程师
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • 鸿蒙原生应用开发
    • 4月29日
    • 火热抢座中
    • 立即咨询
    • VFX商业视效设计
    • 4月29日
    • 火热抢座中
    • 立即咨询
预约申请试听课
收起