栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

完整京淘项目的演练

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

完整京淘项目的演练

1.IDEA环境配置

字体控制大小

2.自动提示设置

3.设置方法提示

4.字符集的设置

 

 5.自动编译

 6.maven的配置

 settings.xml里的文件设置







  

  

  

  
  
    
  

  
  
    
  

  
  
    

    
  

  
  
    
     	
		D:allmavenallscarepository -->
    
		
	        nexus-aliyun
	        *
	        Nexus aliyun
	        http://maven.aliyun.com/nexus/content/groups/public
	 	
     
     
    repo2
    Mirror from Maven Repo2
    http://repo2.maven.org/maven2/
    central



    
      maven-default-http-blocker
      external:http:*
      Pseudo repository to mirror external repositories initially using HTTP.
      http://0.0.0.0/
      true
    
  

  
  
    

    
  

  

 local repository的地址,一定要与这个相同,要不然永远maven报错

 local repository里的地址,按照setting.xml里地址来写。切记

 自已经常出这个小错,在创建新项目或者仓库时,

1.6.1Maven配置

1.配置本地仓库

	
		D:allmavenallscarepository -->

3.配置私服镜像


	aliyun
	aliyun for maven
	*
	https://maven.aliyun.com/repository/public
   

 3.

  1. maven中jdk配置(eclipse中配置 选做)


   jdk-1.8
   
	true
      1.8
   
   
	   1.8
	   1.8
	   
        1.8
       
	 
   

1.7安装Lombok

 1.7 Lombok作用

自动生成实体对象方法:Get/Set/toString/无参构造有参构造/equals/hashcode...

 2.springboot的环境调度

默认地址: https://start.spring.io
阿里云地址: https://start.aliyun.com

其中的默认地址: https://start.spring.io与阿里云地址: https://start.aliyun.com所下载的

pom里的写法也不一样

默认地址: https://start.spring.io里新创建的

阿里云地址: https://start.aliyun.com 

 

 

 

2.5.2Maven项目的打包方式

1.默认条件是jar 包

2.web项目可以打成 war包

3.还可以打成pom 如果该项目是父级就是pom包

子集包的版本号可以到父级里面云看,

 2.4关于POM.xml文件说明

2.4.1 SpringBoot原生POM.xml文件


    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.5.4
         
    
    com.example
    springboot_pom
    0.0.1-SNAPSHOT
    springboot_pom
    springboot_pom
    
        1.8
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    



 2.4.2 阿里云项目pom.xml配置



    4.0.0
    com.jt
    springboot_demo1
    0.0.1-SNAPSHOT
    springboot_demo1
    springboot_demo1

    
        1.8
        UTF-8
        UTF-8
        2.4.1
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                
                pom
                import
            
        
    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.8.1
                
                    1.8
                    1.8
                    UTF-8
                
            
            
                org.springframework.boot
                spring-boot-maven-plugin
                2.4.1
                
                    com.jt.SpringbootDemo1Application
                
                
                
                    
                        repackage
                        
                            repackage
                        
                    
                
            
        
    



2.5 关于pom.xml标签说明 2.5.1 关于坐标的说明

说明: 该坐标在本地仓库中是唯一标识符.是当前项目打包/被依赖的唯一路径.

 
    
    com.jt
    
    springboot_demo1
    
    0.0.1-SNAPSHOT
    springboot_demo1
    springboot_demo1
2.5.3 父级项目定义

通过dependencyManagement标签统一定义父级工程,在其中定义了springBoot项目所有兼容的版本信息.
所以依赖项中不需要添加版本号,也可以正常依赖jar包文件


        
            
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                
                pom
                import
            
        
    

2.5.4依赖相关

扩展: 如果项目中依赖第三方jar包文件报错! 如何处理?
问题说明: 有时根据坐标下载jar包文件时,可能由于网络问题,导致jar包下载不完整.
解决方案: 根据第三方的坐标,查找到本地仓库的位置,之后删除 重新下载.

思想: “开箱即用” 是springBoot设计的核心 越来越简单!!!
什么是启动项: SpringBoot为整合第三方框架,写了启动项的jar包文件,其中官方已经将所有的配置信息/需要依赖的jar包文件提前测试并且定义.

 		
            org.springframework.boot
            
            spring-boot-starter-web
        
2.5.5 maven依赖的传递性

说明: maven中的jar包是有依赖的传递性
例如: A项目依赖B.jar包, B.jar依赖C.jar. 在项目中,只需要添加B.jar.则B/C.jar都会自动添加.
实际应用: 如图web.jar包中依赖了很多其它的第三方jar包文件.

2.5.6 maven依赖传递性实现原理

mavenjar包查询网址: https://mvnrepository.com/
依赖项的相关说明:

 2.本地仓库文件说明:

 步骤:
1. 当maven开始解析项目的POM.xml文件时,根据依赖的坐标,找到指定的jar包文件.之后添加该依赖.
2. 之后扫描当前文件中的 xxx.pom文件.
3. 扫描pom.xml文件中的依赖信息dependency
4. 根据dependency的坐标 重复执行上述的操作.直到所有的依赖都添加完成.

2.5.7 文件传递有效性

需求: 网络数据传输,一般都需要进行加密处理.maven中采用SHA1数字签名的加密算法,保证数据传递的有效性!!!
说明: maven数据传递有效性原理图

2.5.7.1 SHA1介绍:

SHA-1(英语:Secure Hash Algorithm 1,中文名:安全散列算法1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为**40个十六进制数**。

关键字: 数字证书.

2.5.7.2 关于Hash说明

问题1: 常见hashcode值 有多少位16进制数组成??? 8位
问题2: 8位16进制数,有多少种排列组合? 2^32种
00000000-FFFFFFFF
问题3: 相同数据进行hash(算法相同),问题: 值是否相同? 必定相同
问题4: 不同数据进行hash(算法相同),问题: 值是否相同? 可能相同 hash碰撞
问题5: 一个数据1kb, 一个数据ITB 问: hash计算的速度谁快? “一样快” hash本质

3. SpringBoot高级用法 3.1 关于配置文件说明 3.1.1pro文件说明
# 1.pro文件语法
# 数据结构类型:   key=value  特别注意不要有空格.
# 字符集编码:    程序读取文件时,默认采用ISO-8859-1编码
# 弊端: 所有的key都必须写完整,不能缩进
3.1.2 YML文件说明
# YML文件的语法
# 1.数据结构   key-value结构
# 2.写法:     key:(空格)value
# 3.层级代码结构,注意缩进
# 4.字符集  文件读取时,默认采用UTF-8编码 可以写中文
server:
  port: 8080
3.2 动态为属性赋值 3.2.1 需求说明

说明: 有时将数据写死,不方便后续扩展,需要为属性动态赋值.
解决方案: 有些数据是后台特有的.一般可以将数据写到配置文件中,之后为属性动态赋值

 3.2.2 编辑YML配置文件

# YML文件的语法
# 1.数据结构   key-value结构
# 2.写法:     key:(空格)value
# 3.层级代码结构,注意缩进 !!!!!
# 4.字符集  文件读取时,默认采用UTF-8编码 可以写中文
# 规则: 命名时最好指定前缀.
server:
  port: 8080
mysql:
  username: root
  password: root
3.2.3 动态为属性赋值
package com.jt.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
public class JDBCController {
    //${key} Spring提供的springel表达式 简称为:spel表达式
    //语法: 从spring容器内部获取key,动态为属性赋值.
    @Value("${mysql.username}")
    String username;     // = "root|";
    @Value("${mysql.password}")
    String password;     // = "root";

    @RequestMapping("/getMsg")
    public String getMsg(){

        return "你好数据库:"+ username +password;
    }
}

3.3 利用properties文件为属性赋值
3.3.1 需求说明
YML文件是SpringBoot的核心配置文件,一般主要用来整合其它第三方框架.属于系统配置文件.如果将大量的业务数据写到系统配置文件中. 耦合性高. 所以将业务数据最好放到pro文件中.

3.3.2 编辑pro配置文件
 

#默认ISO-8859-1 中文必定乱码
mysql.username2=mysql数据库
mysql.password2=你猜猜
3.3.3 pro为属性赋值

说明: 通过注解为属性赋值,可以指定字符集

package com.jt.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.PropertySource;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;


@RestController
@PropertySource(value="classpath:/mysql.properties",encoding = "UTF-8")
public class JDBCController {
    
    @Value("${mysql.username2}")
    private String username2;
    @Value("${mysql.password2}")
    private String password2;

    @RequestMapping("/getMsg2")
    public String getMsg2(){

        return "你好数据库:"+ username2 +password2;
    }
}

 1.2.环境分割

1. SpringBoot高级用法 1.1 常规方式创建SpringBoot项目 1.1.1 创建maven工程

1.1.2 编辑pom.xml文件

说明: 新项目只需要复制 除了坐标之外的配置文件



    4.0.0
    com.jt
    springboot_demo2
    1.0-SNAPSHOT

    
    
        1.8
        UTF-8
        UTF-8
        2.4.1
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

    
        
            
                org.springframework.boot
                spring-boot-dependencies
                ${spring-boot.version}
                pom
                import
            
        
    

    
        
            
                org.apache.maven.plugins
                maven-compiler-plugin
                3.8.1
                
                    1.8
                    1.8
                    UTF-8
                
            
            
                org.springframework.boot
                spring-boot-maven-plugin
                2.4.1
                
                    com.jt.SpringbootDemo1Application
                
                
                
                    
                        repackage
                        
                            repackage
                        
                    
                
            
        
    

即可.

1.2 环境分割
1.2.1 需求说明
情景说明: 如果小李经常往返于 公司和项目基地,其中的服务器端口号经常的变化.
案例:
1. 开发 dev: 8080端口
2. 生产 prod: 9000端口
问题: 由于配置文件数量众多,如果每次修改则带来了诸多不便.所以可以采用环境分割

1.2.2 编辑YML配置文件
编辑配置文件时,注意缩进

#指定环境的默认配置
spring:
  profiles:
    active: dev
---
#为环境定义名称
server:
  port: 8080
spring:
  config:
    activate:
      on-profile: dev
# 采用---的方式实现环境分割
---
server:
  port: 9000
spring:
  config:
    activate:
      on-profile: prod
1.3 热部署 1.3.1 需求说明

在开发阶段 需要频繁的修改配置文件/代码. 需求要求将代码保存之后,程序自动的编译,并且完成tomcat服务的重启. 个别IDEA版本可能不生效.

1.3.2 导入jar包
 
        
            org.springframework.boot
            spring-boot-devtools
        
1.3.3 IDEA环境配置(选做)
  1. 配置自动编译

 2.让热部署有效
快捷键: ctrl + alt + shift + /

 勾选自动重启

1.4 数据库导入 1.4.1 关于数据库链接问题说明

现象: 昨天数据库还可以正常使用,今天早晨开机 发现数据库链接不上? 什么原因??
原因: 有可能是windows中的服务没有启动导致的!
如图: 如果数据库的服务项没有启动,则启动即可.

1.4 数据库导入 1.4.1 关于数据库链接问题说明

现象: 昨天数据库还可以正常使用,今天早晨开机 发现数据库链接不上? 什么原因??
原因: 有可能是windows中的服务没有启动导致的!
如图: 如果数据库的服务项没有启动,则启动即可.

1.4.2 导入数据库

选择数据库之后,导入,并且刷新数据库.

1.5 lombok说明 1.5.1 创建POJO对象
package com.jt.pojo;

import org.springframework.stereotype.Component;

import java.io.Serializable;


public class DemoUser implements Serializable {
    private Integer id;
    private String name;
    private Integer age;
    private String sex;
}
1.5.2 lombok插件说明

lombok可以为POJO实体对象,动态的生成get/set/toString/hashcode/equals等方法.无需程序员手动编辑.

1.5.3 导入jar包

    org.projectlombok
    lombok


1.5.4 常用注解
package com.jt.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
import org.springframework.stereotype.Component;

import java.io.Serializable;


@Data  //动态生成get/set/toString/equals等方法
@Accessors(chain = true) //开启链式加载 重写set方法
@NoArgsConstructor  //无参构造
@AllArgsConstructor //有参构造
public class DemoUser implements Serializable {
    private Integer id;
    private String name;
    private Integer age;
    private String sex;

    //this 运行期有效 代表当前对象
    

    //方法测试
    public void add(){
        DemoUser user = new DemoUser();
        user.setId(100)
            .setName("aaaa")
            .setAge(18)
            .setSex("女");
    }

}

2. Mybatis
2.1 ORM思想
对象关系映射(英语:Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是一种程序设计技术,用于实现面向对象编程语言里不同类型系统的数据之间的转换。从效果上说,它其实是创建了一个可在编程语言里使用的“虚拟对象数据库”。如今已有很多免费和付费的ORM产品,而有些程序员更倾向于创建自己的ORM工具。
概括: 用对象的方式操作数据库
衍生:
1. 对象应该与数据库中的表一一映射.
2. 对象中的属性应该与表中的字段一一映射.
3. 其中的映射应该由程序自动完成.无需人为干预.
2.2 常规JDBC的弊端

 //利用jdbc,完成新增的功能
    private static void method2() throws Exception{
        //1,注册驱动
        Class.forName("com.mysql.jdbc.Driver");
        //2,获取数据库的连接
        //数据传输协议   数据库的ip 端口号 数据库名
        String url = "jdbc:mysql://localhost:3306/cgb2107";
        Connection c = DriverManager.getConnection(url,"root","root");
        //3,获取传输器
        Statement s = c.createStatement();
        //4,利用传输器执行  增删改的SQL
        //executeUpdate()用来执行增删改的SQL,只返回影响行数
        int rows = s.executeUpdate(
                "INSERT INTO emp(ename,job) VALUES('rose','副总')");
        //5,释放资源
        //r.close();//结果集
        s.close();//传输器
        c.close();//连接
    }

弊端:
1. 无论如何执行都必须获取数据库链接. 链接池 c3p0 druid HK链接池
2. 操作sql语句时,步骤繁琐. 不便于学习记忆.
3. 资源必须手动关闭.
优点:
操作数据库最快的方式就是JDBC. 协议 TCP

2.3 Mybatis
2.3.1 Mybatis介绍
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。(mybatis在内部将JDBC封装).
MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

知识整理:
1.持久化 : 计算机在计算时,数据都在内存中.如果断电则数据清空,所以要求将内存数据保存到磁盘中. 概念.
2.持久层: 程序通过Dao/Mapper 与数据库进行交互的层级代码 (Controller层 Service层 Dao/Mapper层) 具体操作.

小结: Mybatis是一个优秀的持久层框架,基于ORM设计思想,实现了以对象的方式操作数据库.
了解: Mybatis的ORM并不完全,只完成了结果集映射,但是Sql需要自己手写.所以也称之为半自动化的ORM映射框架.
2.3.2 Mybatis特点
简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
提供映射标签,支持对象与数据库的orm字段关系映射
提供对象关系映射标签,支持对象关系组建维护
提供xml标签,支持编写动态sql。 [2]

2.4 Mybatis入门案例 2.4.1 导入jar包
  
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.2.0
        

        
        
            mysql
            mysql-connector-java
        
2.4.2 编辑POJO对象
package com.jt.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.io.Serializable;

@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class DemoUser implements Serializable {

    private Integer id;
    private String name;
    private Integer age;
    private String sex;
}

2.4.3 编辑mybatis-config.xml






    
    

        
        
            
            
            
            
                
                
                
                
                
            
        

    

    

    
        
    

根据官网描述,准备xml配置文件. 注意文件路径.

2.4.4 构建持久层接口

说明: 在com.jt.mapper中构建mapper接口

public interface DemoUserMapper {

    //1.查询所有的表数据
    public List findAll();

}

 

2.4.5 构建mapper接口的实现类的xml配置文件






    
    
        select * from demo_user where id = #{id}
    
2.6.3 编辑测试API
    @Test
    public void testFindOne() throws IOException {
        //指定配置文件地址
        String resource = "mybatis/mybatis-config.xml";
        //通过IO流 加载指定的配置文件
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //动态生成SqlSessionFactory
        SqlSessionFactory sqlSessionFactory =
                new SqlSessionFactoryBuilder().build(inputStream);
        SqlSession sqlSession = sqlSessionFactory.openSession();

        //获取接口
        DemoUserMapper demoUserMapper = sqlSession.getMapper(DemoUserMapper.class);
        int id = 1;
        DemoUser demoUser = demoUserMapper.findOne(id);
        System.out.println(demoUser);
        //关闭链接
        sqlSession.close();
    }
3 补充知识

 

 

3.1 驱动问题

报错提示: 显示启动问题.
驱动问题: 项目中使用的驱动 8.0版本
Mysql数据库: 使用5.5版本及以上的!!!
MariadbDB数据库: 要求10及以上
如果不想重新安装数据库,则降低驱动的版本

3.2 数据源链接问题

 说明:
1.注意数据源链接地址
2.注意数据库用户名和密码

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/685907.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号