一、ES6语法

变量声明 let :let声明的变量只在该代码块中有效
常量声明 const :const声明的常量只在该代码块中有效,并且声明后值不可修改
模版字符串 ${变量} :直接将该占位符嵌入字符串中进行字符串拼接
ES6反引号 :多行字符串拼接

  1. //es5
  2. var name = '张飞'
  3. console.log('hello' + name)
  4. //es6
  5. const name2 = '赵云'
  6. console.log(`hello ${name2}`) //hello 赵云

箭头函数:省略 function 关键字,省略 return 关键字,继承当前上下文的 this 关键字

  1. // es6简写
  2. fun = (a,b) => a+b;
  3. console.log(fun(1,2));

动态应用名:
在头部使用html5定义的 <base href="" /> 标签,可以设置当前页面所有标签的href属性都是基于该标签指定的位置作为相对路径(应用上下文)
image.png

二、Spring集成通用mapper

1、使用步骤

a、引入依赖
b、SqlSessionFactoryBean修改使用tkmapper提供的Configuration
c、修改包MapperScanner为tkmapper提供的注解
d、SelSessionFactory设置mybatis的配置信息替换为tkmapper提供的配置类(tk.mybatis.mapper.session.Configuration())
e、在mapper层接口继承Mapper接口(泛型指定对应的实体类),tkmapper会自动创建代理子类,生产常用的CRUD(基本的数据库操作)方法
f、在实体类中添加相关的映射配置,配置属性到数据库字段的映射关系(可不配),设置主键映射(必须配)
实体类中必须有一个字段添加注解 @id 设置为主键映射(没有配置则会默认为所有字段都是主键)

2、mapper注解

当实体类字段名和数据库字段名不一致时,在实体类的字段中,添加数据库表名和字段名注解

@Table 注解:可以配置namecatalogschema三个属性,name属性为对应的表名
@Column 注解:可以配置nameinsertableupdateable三个属性,name属性为对应的数据库字段名,insertable对提供的insert方法有效,如果设置false就不会出现在sql中,updateable对提供的update方法有效,设置为false后不会出现在sql中
@Transient 注解:当实体类中的字段不是数据库中的字段时,使用此注解(Map、List不需要配置这个注解)

3、mapper专用代码生成

maven逆向工程,自动生成实体类和对应的mapper类
pom.xml文件中添加插件(在maven中运行插件即可)

  1. <build>
  2. <plugins>
  3. <plugin>
  4. <artifactId>maven-compiler-plugin</artifactId>
  5. <configuration>
  6. <source>${jdk.version}</source>
  7. <target>${jdk.version}</target>
  8. </configuration>
  9. </plugin>
  10. <plugin>
  11. <groupId>org.mybatis.generator</groupId>
  12. <artifactId>mybatis-generator-maven-plugin</artifactId>
  13. <version>1.3.6</version>
  14. <configuration>
  15. <configurationFile>
  16. ${basedir}/src/main/resources/generator/generatorConfig.xml
  17. </configurationFile>
  18. <overwrite>true</overwrite>
  19. <verbose>true</verbose>
  20. </configuration>
  21. <dependencies>
  22. <dependency>
  23. <groupId>mysql</groupId>
  24. <artifactId>mysql-connector-java</artifactId>
  25. <version>5.1.35</version>
  26. </dependency>
  27. <dependency>
  28. <groupId>tk.mybatis</groupId>
  29. <artifactId>mapper</artifactId>
  30. <version>4.1.5</version>
  31. </dependency>
  32. </dependencies>
  33. </plugin>
  34. </plugins>
  35. </build>

xml配置文件配置(在数据库连接资源文件中,需要配置表名——druid.table.items=表名)

<generatorConfiguration>
    <!--引入数据库配置文件以解耦-->
    <properties resource="jdbc.properties"/>
    <!-- mysql jar 文件位置 -->
  <!--  <classPathEntry location="D:\.m2\repository\mysql\mysql-connector-java\5.1.35\mysql-connector-java-5.1.35.jar" />

-->


    <context id="testTables" targetRuntime="MyBatis3">
        <!--mapper插件-->
        <plugin type="tk.mybatis.mapper.generator.MapperPlugin">
            <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
            <property name="caseSensitive" value="true"/>
        </plugin>

        <commentGenerator>
            <!-- 是否去除自动生成的注释,true:是;false:否 -->
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        <!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
        <jdbcConnection driverClass="${druid.driverClassName}"
                        connectionURL="${druid.url}" userId="${druid.username}"
                        password="${druid.password}">
        </jdbcConnection>
        <!--Oracle数据库的连接信息-->
        <!-- <jdbcConnection driverClass="oracle.jdbc.OracleDriver"
            connectionURL="jdbc:oracle:thin:@127.0.0.1:1521:yycg"
            userId="yycg"
            password="yycg">
        </jdbcConnection> -->

        <!-- 默认false,把JDBC DECIMAL 和 NUMERIC 类型解析为 Integer,为 true时把JDBC DECIMAL 和
            NUMERIC 类型解析为java.math.BigDecimal -->
        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!-- targetProject:生成PO类的位置 -->
        <javaModelGenerator targetPackage="com.qt.entity"
                            targetProject="src/main/java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
            <!-- 从数据库返回的值被清理前后的空格 -->
            <property name="trimStrings" value="true" />
        </javaModelGenerator>
        <!-- targetProject:mapper映射文件生成的位置 -->
        <sqlMapGenerator targetPackage="com.qt.mapper"
                         targetProject="src/main/java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </sqlMapGenerator>
        <!--
        targetPackage:mapper接口生成的位置,遵循MyBatis规范,让mapper.xml
        和mapper.java在同一目录下
        ANNOTATEDMAPPER:注解方式
        XMLMAPPER:xml方式
         -->
        <javaClientGenerator type="ANNOTATEDMAPPER"
                             targetPackage="com.qt.mapper"
                             targetProject="src/main/java">
            <!-- enableSubPackages:是否让schema作为包的后缀 -->
            <property name="enableSubPackages" value="false" />
        </javaClientGenerator>
        <!-- 指定数据库表 -->
        <table tableName="${druid.table.items}" enableCountByExample="false" enableDeleteByExample="false"
               enableSelectByExample="false" enableUpdateByExample="false" domainObjectName="AppVersion" ></table>

        <!-- <table schema="" tableName="sys_user"></table>
        <table schema="" tableName="sys_role"></table>
        <table schema="" tableName="sys_permission"></table>
        <table schema="" tableName="sys_user_role"></table>
        <table schema="" tableName="sys_role_permission"></table> -->

        <!-- 有些表的字段需要指定java类型
         <table schema="" tableName="">
            <columnOverride column="" javaType="" />
        </table> -->
    </context>
</generatorConfiguration>

三、分页插件

依赖jar包:

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.11</version>
</dependency>

修改Mybatis配置文件,SqlSessionFactoryBean引入分页插件
image.png
在需要使用分页的功能调用dao方法前编写分页api
开启分页功能,会自动扩展sql语句 PageHelper.startPage(要显示起始页,每页显示条数)
image.png

四、事务

事务隔离级别
读取未提交(READ-UNCOMMITTED):最低的隔离级别,可以读取到还没有提交事务的数据(脏读)
读取已提交(READ-COMMITTED):
可重复读(REPEATABLE-READ):
可串行化(SERIALIZABLE-序列化):