整体思路和http://www.cnblogs.com/mahuan2/p/5859921.html相同。

主要讲maven的pom.xml和一些配置变化,详细说明。

软件简介

Spring是一个流行的控制反转(IoC)和面向切面(AOP)的容器框架,在java webapp开发中使用广泛。http://projects.spring.io/spring-framework/

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。http://projects.spring.io/spring-boot/

MyBatis是一个基于Java的数据持久层框架,其原名是iBatis,在升级到3.0版本后,更名为MyBatis。https://github.com/mybatis/mybatis-3/

MyBatis Generator是一个MyBatis的代码生成器,通过配置,可自动生成数据操作接口、实体类以及mapper.xml文件。https://github.com/mybatis/generator

maven开发环境搭建

可以使用http://start.spring.io/初始化maven工程。

使用eclipseIDE,新建maven工程。

在pom.xml文件中,添加如下内容,引入相关jar。mybatis-generator版本是1.3.5。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project
  3. xmlns="http://maven.apache.org/POM/4.0.0"
  4. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  5. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  6. <modelVersion>4.0.0</modelVersion>
  7.  
  8. <groupId>com.founder</groupId>
  9. <artifactId>springboot</artifactId>
  10. <version>0.0.1-SNAPSHOT</version>
  11. <packaging>jar</packaging>
  12.  
  13. <name>first</name>
  14. <description>Demo project for Spring Boot</description>
  15.  
  16. <!-- lookup parent from repository -->
  17. <parent>
  18. <groupId>org.springframework.boot</groupId>
  19. <artifactId>spring-boot-starter-parent</artifactId>
  20. <version>1.5.1.RELEASE</version>
  21. <relativePath />
  22. </parent>
  23.  
  24. <properties>
  25. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  26. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  27. <java.version>1.8</java.version>
  28. </properties>
  29.  
  30. <dependencies>
  31. <dependency>
  32. <groupId>org.springframework.boot</groupId>
  33. <artifactId>spring-boot-starter</artifactId>
  34. </dependency>
  35. <dependency>
  36. <groupId>org.springframework.boot</groupId>
  37. <artifactId>spring-boot-starter-web</artifactId>
  38. </dependency>
  39. <dependency>
  40. <groupId>org.springframework.boot</groupId>
  41. <artifactId>spring-boot-starter-test</artifactId>
  42. <scope>test</scope>
  43. </dependency>
  44. <dependency>
  45. <groupId>org.springframework.boot</groupId>
  46. <artifactId>spring-boot-devtools</artifactId>
  47. <optional>true</optional>
  48. </dependency>
  49. <dependency>
  50. <groupId>org.springframework.boot</groupId>
  51. <artifactId>spring-boot-starter-data-jpa</artifactId>
  52. </dependency>
  53. <dependency>
  54. <groupId>org.mybatis.spring.boot</groupId>
  55. <artifactId>mybatis-spring-boot-starter</artifactId>
  56. <version>1.1.1</version>
  57. </dependency>
  58. <dependency>
  59. <groupId>org.mybatis.generator</groupId>
  60. <artifactId>mybatis-generator</artifactId>
  61. <version>1.3.5</version>
  62. <type>pom</type>
  63. </dependency>
  64. <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core -->
  65. <dependency>
  66. <groupId>org.mybatis.generator</groupId>
  67. <artifactId>mybatis-generator-core</artifactId>
  68. <version>1.3.5</version>
  69. </dependency>
  70. <dependency>
  71. <groupId>mysql</groupId>
  72. <artifactId>mysql-connector-java</artifactId>
  73. </dependency>
  74. </dependencies>
  75.  
  76. <build>
  77. <plugins>
  78. <plugin>
  79. <groupId>org.springframework.boot</groupId>
  80. <artifactId>spring-boot-maven-plugin</artifactId>
  81. <configuration>
  82. <fork>true</fork>
  83. </configuration>
  84. </plugin>
  85. </plugins>
  86. <resources>
  87. <resource>
  88. <directory>src/main/java</directory>
  89. <includes>
  90. <include>**/*.properties</include>
  91. <include>**/*.xml</include>
  92. </includes>
  93. <filtering>false</filtering>
  94. </resource>
  95. <resource>
  96. <directory>src/main/resources</directory>
  97. <includes>
  98. <include>**/*</include>
  99. </includes>
  100. <filtering>false</filtering>
  101. </resource>
  102. </resources>
  103. </build>
  104. </project>

工程目录结构

数据库建表,生成mybatis的代码

为了生成mybatis的代码,首先需要创建一个配置文件,告诉mybatis generator必须的变量。

配置文件保存在src/main/conf/build-mybatis.xml中。

具体配置信息参考官网http://www.mybatis.org/generator/index.html。

注意,配置文件中,添加了一个plugin,这是为生成分页操作添加的,具体内容,后面会讲解。

table中的tableName设置为%,意味着为mysql数据库中的所有表生成对应的代码文件。

mysql中表明使用“_”或者“-”分隔,自动生成的代码文件名中会去掉,并且其后面的字母会升级为大写。

指定好生成的代码文件的保存地址,共有三个。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE generatorConfiguration
  3. PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
  4. "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
  5. <generatorConfiguration>
  6. <!--数据库驱动 -->
  7. <classPathEntry location="C:\Users\mahuan\.m2\repository\mysql\mysql-connector-java\5.1.40\mysql-connector-java-5.1.40.jar" />
  8. <context
  9. id="MySQL2Tables"
  10. targetRuntime="MyBatis3"
  11. defaultModelType="flat">
  12. <plugin type="com.founder.springboot.utils.mybatis.MySQLPaginationPlugin" />
  13. <commentGenerator>
  14. <property
  15. name="suppressDate"
  16. value="true" />
  17. <property
  18. name="suppressAllComments"
  19. value="true" />
  20. </commentGenerator>
  21. <!--数据库链接地址账号密码 -->
  22. <jdbcConnection
  23. driverClass="com.mysql.jdbc.Driver"
  24. connectionURL="jdbc:mysql://172.19.34.114:3306/founder_ali?useSSL=false"
  25. userId="root"
  26. password="123456">
  27. </jdbcConnection>
  28. <javaTypeResolver>
  29. <property
  30. name="forceBigDecimals"
  31. value="false" />
  32. </javaTypeResolver>
  33. <!--生成Model类存放位置 -->
  34. <javaModelGenerator
  35. targetPackage="com.founder.springboot.model.database"
  36. targetProject="src/main/java">
  37. <property
  38. name="enableSubPackages"
  39. value="true" />
  40. <property
  41. name="trimStrings"
  42. value="true" />
  43. </javaModelGenerator>
  44. <!--生成映射文件存放位置 -->
  45. <sqlMapGenerator
  46. targetPackage="com.founder.springboot.mapper.database"
  47. targetProject="src/main/java">
  48. <property
  49. name="enableSubPackages"
  50. value="true" />
  51. </sqlMapGenerator>
  52. <!--生成Dao类存放位置 -->
  53. <javaClientGenerator
  54. type="XMLMAPPER"
  55. targetPackage="com.founder.springboot.mapper.database"
  56. targetProject="src/main/java">
  57. <property
  58. name="enableSubPackages"
  59. value="true" />
  60. </javaClientGenerator>
  61. <!--生成对应表及类名 -->
  62. <table
  63. tableName="%"
  64. enableCountByExample="true"
  65. enableUpdateByExample="true"
  66. enableDeleteByExample="true"
  67. enableSelectByExample="true"
  68. selectByExampleQueryId="true">
  69. <property
  70. name="useActualColumnNames"
  71. value="true" />
  72. <!-- 需要插入时返回主键值,请将此属性打开,column值为主键的列明
  73. <generatedKey column="taskId" sqlStatement="MySql" identity="true" />
  74. -->
  75. </table>
  76. </context>
  77. </generatorConfiguration>

编写代码生成脚本

  1. package com.founder.springboot.utils.mybatis;
  2.  
  3. import java.io.File;
  4. import java.io.IOException;
  5. import java.sql.SQLException;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8.  
  9. import org.mybatis.generator.api.MyBatisGenerator;
  10. import org.mybatis.generator.config.Configuration;
  11. import org.mybatis.generator.config.xml.ConfigurationParser;
  12. import org.mybatis.generator.exception.InvalidConfigurationException;
  13. import org.mybatis.generator.exception.XMLParserException;
  14. import org.mybatis.generator.internal.DefaultShellCallback;
  15.  
  16. public class MyBatisGeneratorTool {
  17. public static void main(String[] args) {
  18. List<String> warnings = new ArrayList<String>();
  19. boolean overwrite = true;
  20. String genCfg = "build-mybatis.xml";
  21. File configFile = new File(MyBatisGeneratorTool.class.getResource(genCfg).getFile());
  22. ConfigurationParser cp = new ConfigurationParser(warnings);
  23. Configuration config = null;
  24. try {
  25. config = cp.parseConfiguration(configFile);
  26. } catch (IOException e) {
  27. e.printStackTrace();
  28. } catch (XMLParserException e) {
  29. e.printStackTrace();
  30. }
  31. DefaultShellCallback callback = new DefaultShellCallback(overwrite);
  32. MyBatisGenerator myBatisGenerator = null;
  33. try {
  34. myBatisGenerator = new MyBatisGenerator(config, callback, warnings);
  35. } catch (InvalidConfigurationException e) {
  36. e.printStackTrace();
  37. }
  38. try {
  39. myBatisGenerator.generate(null);
  40. } catch (SQLException e) {
  41. e.printStackTrace();
  42. } catch (IOException e) {
  43. e.printStackTrace();
  44. } catch (InterruptedException e) {
  45. e.printStackTrace();
  46. }
  47. }
  48. }

分页插件代码

  1. package com.founder.ebd.util.mybatis;
  2.  
  3. import java.util.List;
  4.  
  5. import org.mybatis.generator.api.CommentGenerator;
  6. import org.mybatis.generator.api.IntrospectedColumn;
  7. import org.mybatis.generator.api.IntrospectedTable;
  8. import org.mybatis.generator.api.Plugin;
  9. import org.mybatis.generator.api.PluginAdapter;
  10. import org.mybatis.generator.api.dom.java.Field;
  11. import org.mybatis.generator.api.dom.java.FullyQualifiedJavaType;
  12. import org.mybatis.generator.api.dom.java.JavaVisibility;
  13. import org.mybatis.generator.api.dom.java.Method;
  14. import org.mybatis.generator.api.dom.java.Parameter;
  15. import org.mybatis.generator.api.dom.java.TopLevelClass;
  16. import org.mybatis.generator.api.dom.xml.Attribute;
  17. import org.mybatis.generator.api.dom.xml.TextElement;
  18. import org.mybatis.generator.api.dom.xml.XmlElement;
  19.  
  20. public class MySQLPaginationPlugin extends PluginAdapter {
  21.  
  22. @Override
  23. public boolean modelExampleClassGenerated(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
  24. // add field, getter, setter for limit clause
  25. addLimit(topLevelClass, introspectedTable, "limitStart");
  26. addLimit(topLevelClass, introspectedTable, "count");
  27. // add the method that get the only Criteria
  28. addCriteriaGetter(topLevelClass, introspectedTable);
  29. return super.modelExampleClassGenerated(topLevelClass, introspectedTable);
  30. }
  31.  
  32. @Override
  33. public boolean sqlMapSelectByExampleWithoutBLOBsElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
  34. XmlElement isNotNullElement = new XmlElement("if"); //$NON-NLS-1$
  35. isNotNullElement.addAttribute(new Attribute("test", "limitStart != null and limitStart >= 0")); //$NON-NLS-1$ //$NON-NLS-2$
  36. isNotNullElement.addElement(new TextElement("limit ${limitStart} , ${count}"));
  37. element.addElement(isNotNullElement);
  38. return super.sqlMapUpdateByExampleWithoutBLOBsElementGenerated(element, introspectedTable);
  39. }
  40.  
  41. @Override
  42. public boolean sqlMapSelectByExampleWithBLOBsElementGenerated(XmlElement element, IntrospectedTable introspectedTable) {
  43. XmlElement isNotNullElement = new XmlElement("if"); //$NON-NLS-1$
  44. isNotNullElement.addAttribute(new Attribute("test", "limitStart != null and limitStart >= 0")); //$NON-NLS-1$ //$NON-NLS-2$
  45. isNotNullElement.addElement(new TextElement("limit ${limitStart} , ${count}"));
  46. element.addElement(isNotNullElement);
  47. return super.sqlMapUpdateByExampleWithoutBLOBsElementGenerated(element, introspectedTable);
  48. }
  49.  
  50. @Override
  51. public boolean modelGetterMethodGenerated(Method method, TopLevelClass topLevelClass, IntrospectedColumn introspectedColumn,
  52. IntrospectedTable introspectedTable, Plugin.ModelClassType modelClassType) {
  53.  
  54. return super.modelGetterMethodGenerated(method, topLevelClass, introspectedColumn, introspectedTable, modelClassType);
  55. }
  56.  
  57. private void addLimit(TopLevelClass topLevelClass, IntrospectedTable introspectedTable, String name) {
  58. CommentGenerator commentGenerator = context.getCommentGenerator();
  59. Field field = new Field();
  60. field.setVisibility(JavaVisibility.PROTECTED);
  61. field.setType(FullyQualifiedJavaType.getIntInstance());
  62. field.setName(name);
  63. field.setInitializationString("-1");
  64. commentGenerator.addFieldComment(field, introspectedTable);
  65. topLevelClass.addField(field);
  66. char c = name.charAt(0);
  67. String camel = Character.toUpperCase(c) + name.substring(1);
  68. Method method = new Method();
  69. method.setVisibility(JavaVisibility.PUBLIC);
  70. method.setName("set" + camel);
  71. method.addParameter(new Parameter(FullyQualifiedJavaType.getIntInstance(), name));
  72. method.addBodyLine("this." + name + "=" + name + ";");
  73. commentGenerator.addGeneralMethodComment(method, introspectedTable);
  74. topLevelClass.addMethod(method);
  75. method = new Method();
  76. method.setVisibility(JavaVisibility.PUBLIC);
  77. method.setReturnType(FullyQualifiedJavaType.getIntInstance());
  78. method.setName("get" + camel);
  79. method.addBodyLine("return " + name + ";");
  80. commentGenerator.addGeneralMethodComment(method, introspectedTable);
  81. topLevelClass.addMethod(method);
  82. }
  83.  
  84. private void addCriteriaGetter(TopLevelClass topLevelClass, IntrospectedTable introspectedTable) {
  85. CommentGenerator commentGenerator = context.getCommentGenerator();
  86. Method method = new Method();
  87. method.setVisibility(JavaVisibility.PUBLIC);
  88. method.setName("getCriteria");
  89. method.setReturnType(new FullyQualifiedJavaType("Criteria"));
  90. method.addBodyLine("if (oredCriteria.size() != 0) {return oredCriteria.get(0);}");
  91. method.addBodyLine("Criteria criteria = createCriteriaInternal();");
  92. method.addBodyLine("oredCriteria.add(criteria);");
  93. method.addBodyLine("return criteria;");
  94. commentGenerator.addGeneralMethodComment(method, introspectedTable);
  95. topLevelClass.addMethod(method);
  96. }
  97.  
  98. @Override
  99. public boolean validate(List<String> arg0) {
  100. // TODO Auto-generated method stub
  101. return true;
  102. }
  103. }

SpringBoot配置

在src/main/resources/application.properties中增加mybatis配置和jdbc配置。表示mybatis的配置文件未知,以及mapper的xml文件位置。

  1. mybatis.config-locations=classpath:mybatis/mybatis-config.xml
  2. mybatis.mapper-locations=classpath:com/founder/springboot/mapper/database/*.xml
  3.  
  4. spring.datasource.driverClassName = com.mysql.jdbc.Driver
  5. spring.datasource.url = jdbc:mysql://172.19.34.114:3306/founder_ali?useUnicode=true&characterEncoding=utf-8
  6. spring.datasource.username = root
  7. spring.datasource.password = 123456

在application启动类中,增加注解,表示何处扫描mapper接口。

  1. package com.founder.springboot;
  2.  
  3. import org.mybatis.spring.annotation.MapperScan;
  4. import org.springframework.boot.SpringApplication;
  5. import org.springframework.boot.autoconfigure.SpringBootApplication;
  6.  
  7. @SpringBootApplication
  8. @MapperScan("com.founder.springboot.mapper.database")
  9. public class FirstApplication {
  10.  
  11. public static void main(String[] args) {
  12. SpringApplication.run(FirstApplication.class, args);
  13. }
  14. }

至此,mybatis配置完成。

springboot application.properties配置可参考官方文档

测试生成的代码

ExampleService

  1. package com.founder.springboot.service;
  2.  
  3. import java.util.List;
  4.  
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.stereotype.Service;
  7.  
  8. import com.founder.springboot.mapper.database.SysUserMapper;
  9. import com.founder.springboot.model.database.SysUser;
  10. import com.founder.springboot.model.database.SysUserExample;
  11.  
  12. @Service
  13. public class ExampleService {
  14.  
  15. @Autowired
  16. SysUserMapper sysUser;
  17.  
  18. public List<SysUser> get() {
  19. SysUserExample example = new SysUserExample();
  20. example.setLimitStart(0);
  21. example.setCount(10);
  22. return sysUser.selectByExample(example);
  23. }
  24. }

ExampleController

  1. package com.founder.springboot.controller;
  2.  
  3. import java.util.List;
  4.  
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.bind.annotation.RestController;
  8.  
  9. import com.founder.springboot.model.database.SysUser;
  10. import com.founder.springboot.service.ExampleService;
  11.  
  12. @RestController
  13. public class ExampleController {
  14.  
  15. @Autowired
  16. private ExampleService service;
  17.  
  18. @RequestMapping(value = "/get", produces = "application/json; charset=UTF-8")
  19. public List<SysUser> get() {
  20. return service.get();
  21. }
  22. }

测试类

  1. package com.founder.springboot.controller;
  2.  
  3. import org.junit.Test;
  4. import org.junit.runner.RunWith;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.boot.test.context.SpringBootTest;
  7. import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
  8. import org.springframework.test.context.web.WebAppConfiguration;
  9.  
  10. import com.founder.springboot.FirstApplication;
  11.  
  12. @RunWith(SpringJUnit4ClassRunner.class)
  13. @SpringBootTest(classes = FirstApplication.class)
  14. @WebAppConfiguration
  15. public class ExampleControllerTest {
  16. @Autowired
  17. private ExampleController controller;
  18.  
  19. @Test
  20. public void get() throws Exception {
  21. System.out.println(controller.get());
  22. }
  23. }

SpringBoot打包运行

使用maven命令

  1. mvn clean package

可将springboot工程,打包为一个可运行的jar包。

注意:mapper的xml文件在src/main/java目录中,maven默认是不编译的,导致jar中缺少xml配置文件。需修改pom.xml配置,初始pom.xml已修改。

springboot和mybatis集成,自动生成model、mapper,增加mybatis分页功能的更多相关文章

  1. Java MyBatis逆向工程,自动生成pojo,mapper

    生成xml文件,文件名generator.xml <?xml version="1.0" encoding="UTF-8"?><!DOCTYP ...

  2. Mybatis Generator自动生成的mapper只有insert方法

    – Mybatis Generator 生成的mapper只有insert方法 – 首先检查generatorConfig.xml中table项中的属性 enableSelectByPrimaryKe ...

  3. 使用Generator 自动生成 model mapper mapping 文件

    1.下载包 地址http://download.csdn.net/detail/u012909091/7206091 2.下载完成解压文件到任意目录 3.删除下mybatis-generator-co ...

  4. MyBatis 使用Generator自动生成Model , Dao, mapper

    最近   我新建了一 个maven 项目,使用的是spring + springmvc + mybatis框架. 听说Mybatis可以自动生成model和mapper以及dao层,我就从网上查了查资 ...

  5. Springboot 系列(十一)使用 Mybatis(自动生成插件) 访问数据库

    1. Springboot mybatis 介绍 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数获取 ...

  6. IDEA Maven Mybatis generator 自动生成代码(实例讲解)(转)

    IDEA Maven Mybatis generator 自动生成代码(实例讲解) MyBatis Generator • 简称MBG,是一个专门为MyBatis框架使用者定制的代码生成器,可以快速的 ...

  7. Springboot mybatis generate 自动生成实体类和Mapper

    https://github.com/JasmineQian/SpringDemo_2019/tree/master/mybatis Springboot让java开发变得方便,Springboot中 ...

  8. mybatis自动生成model、dao及对应的mapper.xml文件

    背景: 日常开发中,如果新建表,手动敲写model.dao和对应的mapper.xml文件,费时费力且容易出错, 所以采用mybatis自动生成model.dao及对应的mapper.xml文件.代码 ...

  9. SpringBoot 添加mybatis generator 自动生成代码插件

    自动生成数据层代码,提高开发效率 1.pom添加插件,并指定配置文件路径 <!-- mybatis generator 自动生成代码插件 --> <plugin> <gr ...

  10. SpringBoot入门篇--整合mybatis+generator自动生成代码+druid连接池+PageHelper分页插件

    原文链接 我们这一篇博客讲的是如何整合Springboot和Mybatis框架,然后使用generator自动生成mapper,pojo等文件.然后再使用阿里巴巴提供的开源连接池druid,这个连接池 ...

随机推荐

  1. 【大数据系统架构师】0.3 MySQL数据库

    1. MySQL的基本操作 2. SQL语句 3. 高级查询 1)聚合函数.分组查询 2)联合查询.连接查询 3)子查询 4. 高级应用 1)视图与索引 2)数据可视化管理 5. 使用JDBC操作数据 ...

  2. 使用python-docx生成Word文档

    首先是安装python-docx:(centos环境) pip install python-docx 基本方法使用: from docx import Document from docx.shar ...

  3. [Swift]八大排序算法(二):快速排序

    排序分为内部排序和外部排序. 内部排序:是指待排序列完全存放在内存中所进行的排序过程,适合不太大的元素序列. 外部排序:指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存 ...

  4. LVS解决高并发,大数据量

    http://www.360doc.com/content/14/0726/00/11962419_397102114.shtml LVS的全称Linux vitual system,是由目前阿里巴巴 ...

  5. Pycharm关闭后Python.exe还是在后台运行

    pycharm运行程序关闭后会弹出一个对话框: 一定要选择第一个,不然python.exe一直会在后台运行.

  6. I/O(输入/输出)---字节流与字符流

    流: 分为输入流和输出流,输入/输出是相对计算机内存来说的,数据输入到内存是输入流,数据从内存中输出是输出流. 流对象构造的时候会和数据源联系起来. 数据源分为:源数据源和目标数据源.输入流联系的是源 ...

  7. c语言数据结构学习心得——树

    树 一对多的树型结构,有且只有一个特定的根结点. 结点的度:结点拥有子树的数量{ 度为0:叶子结点/终端结点. 度不为0:非终端结点/分支结点(除去根结点其它称为内部结点).} 树的度:树中所有结点的 ...

  8. SDUT OJ 数组计算机(线段树)

    学长推荐了这个博客详细的介绍了线段树的建立.查找.更新: 数组计算机 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Prob ...

  9. SDUT OJ 顺序表应用1:多余元素删除之移位算法

    顺序表应用1:多余元素删除之移位算法 Time Limit: 1000 ms Memory Limit: 650 KiB Submit Statistic Discuss Problem Descri ...

  10. 15. window.onload和$(function() { } )的区别

    window.onload和$(function() { } )的区别 1)执行时机不一样 $(function() { } )是在dom结构创建完成以后就执行,window.onload是在整个页面 ...