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

IDEA创建springboot项目

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

IDEA创建springboot项目

1、新建

2、选择版本依赖

3、maven配置

4、yml文件配置

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

5、动态为属性赋值,JDBCController

@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;
    }

}

6、访问:http://localhost:8080/getMsg,页面显示

7、利用properties文件为属性赋值,mysql.properties

#默认ISO-8859-1 中文必定乱码
mysql.username2=mysql数据库
mysql.password2=你猜猜

8、通过注解为属性赋值,可以指定字符集

@RestController
@PropertySource(value="classpath:/mysql.properties", encoding = "UTF-8")
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;
    }


    
    @Value("${mysql.username2}")
    private String username2;
    @Value("${mysql.password2}")
    private String password2;

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

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

}

9、访问:http://localhost:8080/getMsg2,显示

10、springboot高级用法,创建springboot项目

模板,maven

11、编辑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
                        
                    
                
            
        
    

12、yml配置文件

开发 dev: 8080端口       生产 prod: 9000端口

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

13、热部署

在开发阶段,需要频繁的修改配置文件/代码

需求:要求将代码保存之后,程序自动的编译,并且完成tomcat服务的重启

个别IDEA版本可能不生效

        
        
            org.springframework.boot
            spring-boot-devtools
        

14、创建pojo

public class DemoUser implements Serializable {

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

}

15、lombok

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

        
        
            org.projectlombok
            lombok
        

16、采用注解

@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;

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

}

17、Mybatis

        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.2.0
        

        
        
            mysql
            mysql-connector-java
        

18、POJO对象

@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;

}

19、编辑mybatis-config.xml文件






    
    

        
        
            
            
            
            
                
                
                
                
                
            
        

    

    
    
        
    

20、构建mapper接口

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

21、xml配置文件






    
    
        select id,name,age,sex from demo_user
    

    

22、mybatis实现数据库查询

    
    @Test
    public void demo1() throws IOException {
        //指定配置文件地址
        String resource = "mybatis-config.xml";
        //通过IO流 加载指定的配置文件
        InputStream inputStream = Resources.getResourceAsStream(resource);
        //动态生成SqlSessionFactory
        SqlSessionFactory sqlSessionFactory =
                new SqlSessionFactoryBuilder().build(inputStream);
        //获取SqlSession  类比 数据库链接
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //获取Mapper接口
        DemoUserMapper demoUserMapper = sqlSession.getMapper(DemoUserMapper.class);
        //获取数据
        List userList = demoUserMapper.findAll();
        System.out.println(userList);
        //关闭链接
        sqlSession.close();
    }

23、查询结果

24、根据ID查询数据

DemoUser findOne(int id);

25、xml映射文件

    
    
        select * from demo_user where name = #{name}
    

32、编辑接口

List findByName(String name);

33、结果

34、mybatis中参数封装

    
    @Test
    public void testFindBySA(){
        //保证每个线程都能获取一个链接
        SqlSession sqlSession = sqlSessionFactory.openSession();
        DemoUserMapper demoUserMapper = sqlSession.getMapper(DemoUserMapper.class);
        //编程习惯: 面向对象
        DemoUser user = new DemoUser();
        user.setAge(18).setSex("女");
        List list = demoUserMapper.findBySA(user);
        System.out.println(list);
        sqlSession.close();
    }

35、接口

List findBySA(DemoUser user);

36、xml

    
    
        select * from demo_user where sex= #{sex} and age > #{age}
    

    
    
        select * from demo_user where sex= #{sex} and age > #{age}
    

40、接口

    List findBySA(DemoUser user);

    List findBySA2(@Param("sex") String sex, @Param("age") Integer age);

    List findBySA3(Map map);

41、Mybatis常规CURD操作,新增操作

    
    @Test
    public void testSaveUser(){
        SqlSession sqlSession = sqlSessionFactory.openSession();
        DemoUserMapper demoUserMapper = sqlSession.getMapper(DemoUserMapper.class);
        //数据库主键自增,所以对象的ID可以为null.
        DemoUser user = new DemoUser(null,"佛媛",99,"女");
        int rows = demoUserMapper.saveUser(user);
        if(rows > 0){
            System.out.println("影响的行数:"+rows);
            //事务提交
            sqlSession.commit();
        }
        sqlSession.close();
    }

42、接口

int saveUser(DemoUser user);

43、xml

    
    
        insert into demo_user value (null,#{name},#{age},#{sex})
    

44、结果

45、查看数据库

46、Mybatis中的转义标签

    xml文件中的转义字符.
            >  > 大于
            <  < 小于
            &  & 号
    说明:如果sql中有大量的转义字符 建议使用转义标签体
    语法: 

47、查询age> 18 and age< 100 的用户信息

    
    @Test
    public void testSelect01(){
        SqlSession sqlSession = sqlSessionFactory.openSession();
        DemoUserMapper demoUserMapper = sqlSession.getMapper(DemoUserMapper.class);
        Map map = new HashMap<>();
        map.put("minAge",18);
        map.put("maxAge",100);
        List userList = demoUserMapper.findByAge(map);
        System.out.println(userList);
        sqlSession.close();
    }

48、接口

List findByAge(Map map);

49、xml

    
        
        select * from demo_user where name like #{name} order by age desc
    

59、接口

List findLike(String name);

60、结果

61、批量更新操作

    
    @Test
    public void updateUser(){
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        DemoUserMapper demoUserMapper = sqlSession.getMapper(DemoUserMapper.class);
        Map map = new HashMap<>();
        String[] array = {"小乔","大乔","王昭君"};
        map.put("names",array);
        map.put("age",18);
        map.put("sex","女");
        demoUserMapper.updateUser(map);
        sqlSession.close();
    }

62、xml

    
    
        update demo_user set age = #{age}, sex = #{sex}
        where name in (
        
            #{name}
        
        )
    

63、接口

void updateUser(Map map);

64、显示

65、Mybatis简化,别名包,核心配置文件



    
    
        
    

66、以后可以使用别名,代替类型的全路径



    
    
    
        select id,name,age,sex from demo_user
    

69、别名的注解定义

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

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

}

70、Mybatis简化,sql标签

sql重复,可以使用sql标签

1. select id,name,age,sex from demo_user where id = 1
2. select id,name,age,sex from demo_user where name = xxx

71、用法

    
    
        select id,name,age,sex from demo_user
    

    
    
        
    

72、sql标签的说明

优势:
1.使用Sql标签可以节省xml的文件大小.
2.代码的结构相对简单.
弊端:
1.Sql只能抽取公共的Sql语句,局限性稍大.
2.如果大量的使用Sql标签,则代码的可读性差

73、Mybatis,动态sql

IF-WHERe用法

    
    @Test
    public void testFindWhere(){
        SqlSession sqlSession = sqlSessionFactory.openSession();
        DemoUserMapper demoUserMapper = sqlSession.getMapper(DemoUserMapper.class);
        DemoUser demoUser = new DemoUser();
        demoUser.setAge(3000);
        List list = demoUserMapper.findWhere(demoUser);
        System.out.println(list);
        sqlSession.close();
    }

74、xml

    
    
        select * from demo_user
        where
        
            name = #{name}
            sex = #{sex}
        
    

82、接口

List selectChoose(DemoUser user);

83、结果

84、ResultMap用法

创建表dept

85、编辑Dept

@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class Dept implements Serializable {
    //驼峰命名规则
    private Integer deptId;
    private String deptName;
}

86、标签说明

resultType说明:
当结果集中的字段名称,如果与属性的名称一致时,才会实现自动的数据封装
resultMap说明:
当结果集中的字段名称,与对象中的属性不一致时,可以使用resultMap实现自定义的封装.

87、测试

    @Test
    public void testFindDept(){
        SqlSession sqlSession = sqlSessionFactory.openSession();
        DeptMapper deptMapper = sqlSession.getMapper(DeptMapper.class);
        List list = deptMapper.findAll();
        System.out.println(list);
        sqlSession.close();
    }

88、编辑接口DeptMapper

public interface DeptMapper {

    List findAll();

}

89、xml,DeptMapper.xml





    
    
        select * from demo_user where id = #{id}
    

116、访问:localhost:8090/findUserById?id=6

117、什么是Servlet

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。

概括: Servlet是java后台程序与用户交互的机制(媒介)

    //http://localhost:8090/findUserByIds?id=1,3,5,6,7
    @GetMapping("/findUserByIds")
    public String findUserByIds(HttpServletRequest request){
        String id = request.getParameter("id");//id串
        String[] idStr = id.split(",");//数字数组
        Integer[] intArray = new Integer[idStr.length];//多少个数字长度的Integer类型的新空数组
        for (int i=0; i 

118、访问:localhost:8090/findUserByIds?id=1,3,5,7,9,11

页面和控制台

 

 119、Sql日志

#Sql日志文件打印
logging:
  level:
    com.jt.mapper: debug

120、SpringMVC参数传值说明,简单参数传值

    
    @GetMapping("/mvc")
    public Object testDemo(String name){

        return "参数名称:"+name;
    }

121、访问:localhost:8090/mvc?name="李思思"

122、对象接收数据

如果用户传递的数据有多个,则可以使用对象接收

    
    @GetMapping("/mvc2")
    public Object testDemo(User user){

        return "参数名称:"+user;
    }

 123、访问:localhost:8090/mvc2?name="科比"&age=30&sex="男"

124、restful业务说明,UserController

    
    @GetMapping("/user/{name}/{age}/{id}")
    public Object restFul(User user){
    
        userService.update(user);
        return "数据更新成功!!!";
    }

125、Service及其实现类

void update(User user);
    @Override
    public void update(User user) {
        userMapper.update(user);
    }

126、Mapper接口

    //@Delete("xxxxx")
    //@Insert("sql语句")
    //@Select("查询操作的sql")
    @Update("update demo_user set name=#{name}, age=#{age} where id=#{id}")
    void update(User user);

127、访问:localhost:8090/user/张飞/33/247

页面和数据库

 

128、前后端调用,vue入门案例



	
		
		hello 入门案例
	
	
		
			双向数据绑定测试
			{插值表达式}} -->
			获取数据:{{ msg }}
		
		
				
		
		
		
		
	

129、显示

 

130、运行,运行到浏览器,Chrome

131、VUE生命周期函数

概念: 生命周期函数,是VUE针对与用户提供的扩展的功能.如果编辑了生命周期函数,则vue对象自动执行,无需手动调用.
生命周期函数种类:
1. 初始化阶段 beforeCreate created beforeMount mounted VUE对象正在的实例化
2. Vue对象的修改 beforeUpdate, updated
3. 对象销毁 beforeDestroy destroyed

132、案例



	
		
		测试vue生命周期函数
	
	
		
		
			

 

133、页面和开发者工具

 

 

134、前后端调用Axios,Ajax

同步:一个线程依次加载执行,如果数据没有加载完成,则其他数据处于等待的状态

异步:Ajax特点:局部刷新,异步访问    Ajax为什么可以异步:Ajax的设计原理-Ajax引擎

Ajax引擎

用户发起请求,交给Ajax引擎进行处理, 用户可以执行其它的操作.
Ajax引擎接收到用户请求之后, 发起Http请求访问目标服务器.
后台服务器将数据返回给Ajax引擎.
Ajax引擎 将最终获取的数据 通过回调函数的方式 交给用户处理.

135、Axios案例练习

 

136、启动后台,运行页面,打开开发者工具,刷新,出现错误

 

 137、解决跨域问题

138、显示

 

139、根据id查询数据

			
			let url1 = "http://localhost:8090/axios/findUserById?id=8"
			axios.get(url1)
					 .then(function(result){
						 console.log(result.data)
					 })

140、AxiosController

@RestController
@CrossOrigin
@RequestMapping("/axios")
public class AxiosController {
    @Autowired
    private UserService userService;

    
    @GetMapping("/findUserById")
    public User findUserById(Integer id){

        return userService.findUserById(id);
    }

141、重启后台,刷新页面,开发者工具

 

142、根据name和age查询数据

			
			let url2 = "http://localhost:8090/axios/findUserByAS"
			//封装对象
			let user = {
				age: 18,
				sex: "女"
			}
			axios.get(url2,{params : user})
				 .then(function(promise){
					 console.log(promise.data)
				 })

143、AxiosController

    
    @GetMapping("/findUserByAS")
    public List findUserByAS(User user){

        return userService.findUserByAS(user);
    }

144、UserService及其实现类

List findUserByAS(User user);
    @Override
    public List findUserByAS(User user) {
        return userMapper.findUserByAS(user);
    }

145、Mapper接口

    @Select("select * from demo_user where age=#{age} and sex=#{sex}")
    List findUserByAS(User user);

146、页面展现效果

 

 147、Axios-GET-RestFul

			 	 
			let name = "黑熊精"
			let sex = "男"
			//let url3 = "http://localhost:8090/axios/user/"+name+"/"+sex
			let url3 = `http://localhost:8090/axios/user/${name}/${sex}`
			axios.get(url3)
				 .then(function(promise){
					 console.log(promise.data)
				 })

148、AxiosController

    
    @GetMapping("/user/{name}/{sex}")
    public List findUserByNS(User user){

        return userService.findUserByNS(user);
    }

149、Service及其实现类

List findUserByNS(User user);
    @Override
    public List findUserByNS(User user) {
        return userMapper.findUserByNS(user);
    }

150、Mapper接口

    @Select("select * from demo_user where name=#{name} and sex=#{sex}")
    List findUserByNS(User user);

151、效果

 

152、Axios-POST/PUT

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

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

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