1. 程式人生 > 其它 >前端優化首屏載入速度

前端優化首屏載入速度

思路:搭建環境 --> 匯入MyBatis --> 編寫程式碼 --> 測試!

1、搭建環境

搭建資料庫

-- 建立資料庫
CREATE DATABASE `mybatis`;

USER `mybatis`;

-- 建立表
CREATE TABLE `user`(
	`id` int(20) NOT NULL PRIMARY KEY,
	`name` VARCHAR(30) DEFAULT NULL,
	`pwd` VARCHAR(30) DEFAULT NULL
)ENGINE=INNODB DEFAULT CHARSET=utf8

-- 插入表資料
INSERT INTO `user`(`id`,`name`,`pwd`) VALUES
(1,'小王','123456'),
(2,'張三','123456'),
(3,'李四','123456');

新建專案

  1. 新建一個普通的maven專案

  2. 刪除src目錄,將它設定為父工程

  3. 匯入maven依賴

    <!-- 匯入依賴 -->
    <dependencies>
        <!-- MySql驅動 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <!-- MyBatis驅動 -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.2</version>
        </dependency>
        <!-- junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    

2、建立一個模組

  • 編寫MyBatis的核心配置檔案

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE configuration
            PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-config.dtd">
    <!-- configuration核心配置檔案 -->
    <configuration>
        <properties resource="jdbc.properties"/>
        <environments default="development">
            <environment id="development">
                <transactionManager type="JDBC"/>
                <dataSource type="POOLED">
                    <property name="driver" value="${jdbc.driver}"/>
                    <property name="url" value="${jdbc.url}"/>
                    <property name="username" value="${jdbc.username}"/>
                    <property name="password" value="${jdbc.password}"/>
                </dataSource>
            </environment>
        </environments>
        <mappers>
           <mapper resource="com/kuang/dao/userMapper.xml"/>
       	</mappers>
    </configuration>
    
  • 編寫MyBatis的工具類

    // sqlSessionFactory --> sqlSession
    public class MyBatisUtils {
        private static SqlSessionFactory sqlSessionFactory;
    
        static {
            try {
                // 使用MyBatis獲取sqlSessionFactory物件
                String resource = "mybatis-config.xml";
                InputStream inputStream = Resources.getResourceAsStream(resource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        //既然有了 SqlSessionFactory,顧名思義,我們可以從中獲得 SqlSession 的例項。
        // SqlSession 提供了在資料庫執行 SQL 命令所需的所有方法。
        public static SqlSession getSqlSession() {
            return sqlSessionFactory.openSession();
        }
    }
    

3、編寫程式碼

  • 實體類

    // 實體類
    public class User {
        private Integer id;
        private String name;
        private String pwd;
       //構造,有參,無參
       //set/get
       //toString()
    }
    
  • 編寫Mapper介面

    public interface UserMapper {
        List<User> getUserList();
    }
    
  • 介面實現類由原來的Impl轉化為一個mapper.xml配置檔案

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <!-- namespace=繫結一個Mapper介面 -->
    <mapper namespace="com.jh.mapper.UserMapper">
        <!-- select 查詢語句 -->
        <select id="getUserList" resultType="com.jh.domain.User">
            select * from user
        </select>
    </mapper>
    

4、測試程式碼

注意點:

org.apache.ibatis.binding.BindingException: Type interface com.jh.mapper.UserMapper is not known to the MapperRegistry.

MapperRegistry是什麼?測試配置檔案中註冊mappers

  • junit測試

    public class UserMapperTest {
        @Test
        public void test() {
            // 第一步:獲得sqlSession物件
            SqlSession sqlSession = MyBatisUtils.getSqlSession();
            // 方式一:執行sql
            UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
            List<User> userList = userMapper.getUserList();
            // 方式二:(不推薦)
        //List<User> userList = sqlSession.selectList("com.jh.mapper.UserMapper.getUserList");
            for (User user : userList) {
                System.out.println(user);
            }
            sqlSession.close();
        }
    }
    

測試中可能會遇到的問題:

  1. 配置檔案沒有註冊
  2. 繫結介面錯誤
  3. 方法名不正確
  4. 返回型別不正確
  5. maven靜態資源過濾問題
<resources>
   <resource>
       <directory>src/main/java</directory>
       <includes>
           <include>**/*.properties</include>
           <include>**/*.xml</include>
       </includes>
       <filtering>false</filtering>
   </resource>
   <resource>
       <directory>src/main/resources</directory>
       <includes>
           <include>**/*.properties</include>
           <include>**/*.xml</include>
       </includes>
       <filtering>false</filtering>
   </resource>
</resources>