前端優化首屏載入速度
阿新 • • 發佈:2020-12-28
思路:搭建環境 --> 匯入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');
新建專案
-
新建一個普通的maven專案
-
刪除src目錄,將它設定為父工程
-
匯入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(); } }
測試中可能會遇到的問題:
- 配置檔案沒有註冊
- 繫結介面錯誤
- 方法名不正確
- 返回型別不正確
- 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>