在线不卡日本ⅴ一区v二区_精品一区二区中文字幕_天堂v在线视频_亚洲五月天婷婷中文网站

  • <menu id="lky3g"></menu>
  • <style id="lky3g"></style>
    <pre id="lky3g"><tt id="lky3g"></tt></pre>

    超市訂單管理系統(tǒng)

    GitHub: github.com/hsowan/soms

    SOMS

    Supermarket Orders Management System 超市訂單管理系統(tǒng)

    Day 01

    使用MyBatis

    MyBatis 官方文檔

    Refer: www.mybatis.org/mybatis-3/z…

    類型別名

    類型別名是你的好幫手。使用它們,你就可以不用輸入類的完全限定名稱了。比如:

    select id, username, hashedPassword from some_table where id = #{id}復制代碼

    log4j2

    Refer: logging.apache.org/log4j/2.x/m…

    Eclipse for Mac 快捷鍵

    刪除一行

    Command + D

    Refer: www.cnblogs.com/TankXiao/p/…

    格式化代碼

    Shift + Command + F

    Day 02

    MyBatis 核心配置

    mybatis-config.xml 配置

    • configuration(配置)
      • properties(屬性)
      • settings(設(shè)置)
      • typeAliases(類型別名)
      • typeHandlers(類型處理器)
      • objectFactory(對象工廠)
      • plugins(插件
      • environments(環(huán)境配置) environment(環(huán)境變量) transactionManager(事務管理器) dataSource(數(shù)據(jù)源)
      • databaseIdProvider(數(shù)據(jù)庫廠商標識)
      • mappers(映射器)

    Refer: www.mybatis.org/mybatis-3/z…

    mapper.xml 配置

    • insert – 映射插入語句
    • update – 映射更新語句
    • delete – 映射刪除語句
    • select – 映射查詢語句
    • resultMap – 是最復雜也是最強大的元素,用來描述如何從數(shù)據(jù)庫結(jié)果集中來加載對象。
    • sql – 可被其他語句引用的可重用語句塊。
    • cache – 對給定命名空間的緩存配置。
    • cache-ref – 對其他命名空間緩存配置的引用。

    Refer: www.mybatis.org/mybatis-3/z…

    使用單例模式創(chuàng)建SqlSessionFactory

    /** * 主配置文件路徑 */private static String config = “mybatis-config.xml”;private static SqlSessionFactory sqlSessionFactory;/** * 使用單例模式獲取SqlSessionFactory * @return */private static synchronized SqlSessionFactory getSqlSessionFactory() {if (sqlSessionFactory == null) {try {// 創(chuàng)建輸入流讀取配置文件InputStream is = Resources.getResourceAsStream(config);// 創(chuàng)建SQLSession工廠sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}return sqlSessionFactory;}復制代碼

    Maven

    Using JUnit

    添加下面的插件到pom.xml中:

    org.apache.maven.pluginsmaven-surefire-plugin3.0.0-M3復制代碼

    執(zhí)行單元測試: mvn test

    Refer: maven.apache.org/surefire/ma…

    Skipping Tests

    mvn install -DskipTests

    Refer: maven.apache.org/surefire/ma…

    JSP 九大內(nèi)置對象+四大域?qū)ο?/h1>

    Refer: my.oschina.net/u/3805464/b…

    Java 八大基本類型

    byte/8char/16short/16int/32float/32long/64double/64boolean/~復制代碼

    Day 03

    動態(tài)SQL

    官方文檔

    • if
    • choose (when, otherwise)
    • trim (where, set)
    • foreach
    • bind

    www.mybatis.org/mybatis-3/z…

    if

    改寫UserMapper.xml:

    select id, username, passwordfrom userwhere username like #{username}limit #{start}, #{count}復制代碼

    改寫單元測試 testListByUsername(使用map進行傳參):

    Map params = new HashMap();params.put(“username”, “%user%”);List users = session.selectList(“com.ncucoder.mapper.UserMapper.listByUsername”, params);復制代碼

    執(zhí)行結(jié)果:

    ==> Preparing: select id, username, password from user where username like ? ==> Parameters: %user%(String)復制代碼

    添加單元測試 testListByUsernameUsingLimit:

    Map params = new HashMap();params.put(“username”, “%user%”);params.put(“start”, 0);params.put(“count”, 2);List users = session.selectList(“com.ncucoder.mapper.UserMapper.listByUsername”, params);復制代碼

    執(zhí)行結(jié)果:

    ==> Preparing: select id, username, password from user where username like ? limit ?, ? ==> Parameters: %user%(String), 0(Integer), 2(Integer)復制代碼

    bind 模糊查詢

    修改UserMapper.xml:

    select id, username, passwordfrom userwhere username like #{username}limit #{start}, #{count}復制代碼

    修改單元測試 testListByUsername():

    Map params = new HashMap();// params.put(“username”, “%user%”);params.put(“username”, “user”);List users = session.selectList(“com.ncucoder.mapper.UserMapper.listByUsername”, params);復制代碼

    執(zhí)行結(jié)果:

    ==> Preparing: select id, username, password from user where username like ? ==> Parameters: %user%(String)復制代碼

    SQL優(yōu)化 in

    查詢user表中id小于5的記錄

    使用in的查詢執(zhí)行計劃(QEP):

    mysql> explain select id, username, password from user where id in (1, 2, 3, 4, 5);+—-+————-+——-+————+——+—————+——+———+——+——+———-+————-+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+—-+————-+——-+————+——+—————+——+———+——+——+———-+————-+| 1 | SIMPLE | user | NULL | ALL | PRIMARY | NULL | NULL | NULL | 10 | 50.00 | Using where |+—-+————-+——-+————+——+—————+——+———+——+——+———-+————-+1 row in set, 1 warning (0.00 sec)復制代碼

    使用<的QEP:

    mysql> explain select id, username, password from user where id < 6;+—-+————-+——-+————+——-+—————+———+———+——+——+———-+————-+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+—-+————-+——-+————+——-+—————+———+———+——+——+———-+————-+| 1 | SIMPLE | user | NULL | range | PRIMARY | PRIMARY | 4 | NULL | 5 | 100.00 | Using where |+—-+————-+——-+————+——-+—————+———+———+——+——+———-+————-+1 row in set, 1 warning (0.00 sec)復制代碼

    使用between的QEP:

    mysql> explain select id, username, password from user where id between 1 and 5;+—-+————-+——-+————+——-+—————+———+———+——+——+———-+————-+| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |+—-+————-+——-+————+——-+—————+———+———+——+——+———-+————-+| 1 | SIMPLE | user | NULL | range | PRIMARY | PRIMARY | 4 | NULL | 5 | 100.00 | Using where |+—-+————-+——-+————+——-+—————+———+———+——+——+———-+————-+1 row in set, 1 warning (0.00 sec)復制代碼

    • type表示對表所使用的訪問方式(最優(yōu)到最差: NULL > system > const > eq_ref > ref > range > index > All)
    • key表示MySQL Query Optimizer從possible_keys中所選擇使用的索引
    • rows表示MySQL Query Optimizer通過系統(tǒng)收集到的統(tǒng)計信息估算出來的結(jié)果集記錄條數(shù), 簡單理解為查詢需要掃描的記錄數(shù)

    分析: 使用in作為查詢條件時沒有使用索引而進行了全表掃描(ALL), 使用<和between作為查詢條件時使用到主鍵索引以及索引范圍掃描, 所以三者比較in的執(zhí)行效率是最低的

    MySQL 批量插入測試數(shù)據(jù)

    — 獲取指定長度的隨機字符串drop function if exists `rand_string`;create function `rand_string`(n int) returns varchar(255) charset ‘utf8’begin DECLARE chars_str varchar(100) DEFAULT ‘abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789’; DECLARE return_str varchar(255) DEFAULT ”; DECLARE i INT DEFAULT 0; WHILE i < n DO SET return_str = concat(return_str, substring(chars_str, FLOOR(1 + RAND() * 62), 1)); SET i = i + 1; END WHILE; RETURN return_str;end;– 插入指定數(shù)量的用戶drop procedure if exists `create_users`;create procedure `create_users`(n int)begin declare i int default 0; while (i < n) do insert into user(username, password) values (rand_string(10), rand_string(32)); set i = i + 1; end while;end;– 調(diào)用存儲過程call create_users(1000);復制代碼

    Day 04

    MyBatis Generator

    官方文檔

    www.mybatis.org/generator/c…

    問題:

    • 改用MySQL8時, 與其他數(shù)據(jù)庫(mysql庫)表名相同時出現(xiàn)錯誤

    添加依賴和插件

    mybatis-generator-core:

    org.mybatis.generator mybatis-generator-core ${mybatis-generator.version}復制代碼

    mybatis-generator-maven-plugin:

    org.mybatis.generator mybatis-generator-maven-plugin ${mybatis-generator.version} true true 復制代碼

    添加配置文件

    • generatorConfig.xml

    生成對應的映射文件、實體類和接口類

    cd ${your_project}mvn mybatis-generator:generator復制代碼

    Refer:

    • www.cnblogs.com/hhhshct/p/9…
    • blog.csdn.net/liyonghong3…

    集成SpringMVC

    添加依賴

    org.springframework spring-core ${spring.version} org.springframework spring-web ${spring.version} org.springframework spring-webmvc ${spring.version} org.springframework spring-beans ${spring.version} org.springframework spring-context ${spring.version} org.springframework spring-test ${spring.version} test org.springframework spring-jdbc ${spring.version} org.springframework spring-tx ${spring.version} org.mybatis mybatis-spring ${mybatis-spring.version} com.alibaba druid ${druid.version}復制代碼

    修改web.xml配置文件

    soms-dispatcher org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:spring/spring-*.xml 1 true soms-dispatcher / encodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true encodingFilter /*復制代碼

    添加Spring的配置文件

    • spring-web.xml
    • spring-dao.xml
    • spring-service.xml

    使用MySQL8

    修改依賴版本(pom.xml):

    8.0.16復制代碼

    修改驅(qū)動路徑(db.properties):

    driver=com.mysql.cj.jdbc.Driver復制代碼

    Day 05

    JWT + SpringSecurity

    github.com/hsowan/jwt-…

    作者:K8sCat鏈接:https://juejin.cn/post/7056040075947147295

    鄭重聲明:本文內(nèi)容及圖片均整理自互聯(lián)網(wǎng),不代表本站立場,版權(quán)歸原作者所有,如有侵權(quán)請聯(lián)系管理員(admin#wlmqw.com)刪除。
    上一篇 2022年6月30日 20:06
    下一篇 2022年6月30日 20:06

    相關(guān)推薦

    聯(lián)系我們

    聯(lián)系郵箱:admin#wlmqw.com
    工作時間:周一至周五,10:30-18:30,節(jié)假日休息