springboot(一)

2020学习教程

web mybatis

待看 17

引入properties 文件

jdbc.properties

jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://14.29.251.271:8036/sensor
jdbc.username=root
jdbc.password=1234

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<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}"/>
                <!--                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>-->
                <!--                <property name="url" value="jdbc:mysql://14.29.251.27:8036/sensor"/>-->
                <!--                                <property name="username" value="root"/>-->
                <!--                <property name="password" value="root"/>-->
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mappers/UserMapper.xml"/>
    </mappers>
</configuration>
mybatis 配置文件讲解

mybatis xml 文件引入properties文件

在这里插入图片描述
在这里插入图片描述

查询所有用户
    @Test
    public void testAllUser() throws IOException {
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = build.openSession(true);
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        for (User user : mapper.getAllUser()) {
            System.out.println(user);
        }
        List<User> allUser = mapper.getAllUser();
        allUser.forEach(user -> System.out.println(user));

    }
查询result报错分析

mybatis的特性:避免了大部分jdbc的代码,以及参数的手工设置,还有结果集的处理,但是也仅仅是帮助我们处理的结果集,查出来的结果集所对应的实体类对象是谁

### The error occurred while handling results
### SQL: select * from t_user where id = 3
### Cause: org.apache.ibatis.executor.ExecutorException: A query was run and no Result Maps were found for the Mapped Statement 'com.example.mybatis.pojo.mapper.UserMapper.getUserById'.  It's likely that neither a Result Type nor a Result Map was specified.

解决
	resulttype 结果类型 、resultmap 结果映射
    <select id="getUserById" resultMap="">
        select * from t_user where id = 3
    </select>

userMap

    /**
     * 查询员工
     * @return
     */
    User getUserById();

xml

    <!--    User getUserById();-->
    <!--    查询结果类型必须设置,resultType:设置默认的映射关系,resultMap设置自定义的映射关系(一对多)-->
    <select id="getUserById" resultType="com.example.mybatis.pojo.User">
        select * from t_user where id = 3
    </select>

test


    @Test
    public  void testCRUD() throws IOException {
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = build.openSession(true);
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//        命名空间的方法名
//        通过命名空间、找到, 通过mapper的全类名,找到映射文件,通过方法名找到sql语句
        User userById = mapper.getUserById();
        System.out.println(userById);

    }
基础

CREATE TABLE `t_user` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `username` varchar(128) NOT NULL COMMENT 'username',
  `password` varchar(128) NOT NULL COMMENT 'password',
  `age` tinyint(4) DEFAULT NULL COMMENT 'age',
  `sex` varchar(128) NOT NULL COMMENT 'sex',
  `email` varchar(128) NOT NULL COMMENT 'email',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8mb4 COMMENT='用户表'

版本过低的问题

### Error updating database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support authentication protocol requested by server; consider upgrading MySQL client
### The error may exist in mappers/UserMapper.xml
### The error may involve com.example.mybatis.pojo.mapper.UserMapper.insertUser
### The error occurred while executing an update
### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Client does not support authentication protocol requested by server; consider upgrading MySQL client

sql 查询版本
select version();
8.0.31

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.30</version>
        </dependency>
        

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.5</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>demo3-mybatis</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>demo3-mybatis</name>
    <description>demo3-mybatis</description>
    <properties>
        <java.version>11</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.4</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.30</version>
        </dependency>

        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>

        </plugins>
    </build>

</project>

log4j.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="https://jakarta.apache.org/log4j/" >
    <appender name="STDOUT" class="org.apache.log4j.ConsoleAppender">
        <param name="Encoding" value="UTF-8" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %d{MM-dd HH:mm:ss,SSS} %m(%F:%L) \n"/>
        </layout>

    </appender>
    <logger name="java.sql">
        <level value="debug" />
    </logger>
    <logger name="org.apache.ibatis">
        <level value="info" />
    </logger>
    <root>
        <level value="debug" />
        <appender-ref ref="STDOUT"/>
    </root>
</log4j:configuration>


mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://14.29.251.271:8036/sensor"/>
                <property name="username" value="root"/>
                <property name="password" value="1234"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <mapper resource="mappers/UserMapper.xml"/>
    </mappers>
</configuration>

UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mybatis.pojo.mapper.UserMapper">
    <insert id="insertUser">
        insert into t_user values(null,'admin','123456',23,'男','12345@qq.com')
    </insert>

    <!--    void updateUser();-->
    <update id="updateUser">
        update t_user set username = '张三' where id = 4
    </update>

    <!--    void deleteUser();-->
    <delete id="deleteUser">
        delete from t_user where id = 6
    </delete>


</mapper>

User.class

package com.example.mybatis.pojo;

public class User {

    private Integer id;

    private String username;

    private String password;

    private Integer age;

    private String sex;

    private String email;

    public User() {
    }

    public User(Integer id, String username, String password, Integer age, String sex, String email) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.age = age;
        this.sex = sex;
        this.email = email;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", email='" + email + '\'' +
                '}';
    }
}

UserMapper.class

package com.example.mybatis.pojo.mapper;

public interface UserMapper {
    /**
     * MyBatis面向接口编程的两个一致
     * 1、namespace一致
     */
    /**
     * 添加用户信息
     */
    int insertUser();

    /**
     * 修改
     */
    void updateUser();

    /**
     * 删除
     */
    void deleteUser();
    
}

testClass

package com.example.mybatis.test;

import com.example.mybatis.pojo.User;
import com.example.mybatis.pojo.mapper.UserMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.tomcat.util.file.ConfigurationSource;
import org.junit.jupiter.api.Test;

import java.io.IOException;
import java.io.InputStream;

public class MyBatisTest {
    @Test
    public void testMyBatis() throws IOException {
        InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(is);
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        int result = mapper.insertUser();
//        sqlSession.commit();
        System.out.println("result" + result);
    }

    @Test
    public void testUpdate() throws IOException {
//        加载核心配置文件,获取字节输入流,把异常声明出去
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
//        创建build,通过里面的字节输入流获取里面的工厂对象
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
//        自动提交
        SqlSession sqlSession = build.openSession(true);
//        获取当前对象
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
//        调用方法
        mapper.updateUser();

    }

    @Test
    public void testDelete() throws IOException {
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
        SqlSession sqlSession = build.openSession(true);
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        mapper.deleteUser();
    }
}


web 开发 20221016

jdbc

#spring.datasource.url=jdbc:mysql://14.29.251.27:8036/sensor
#spring.datasource.username=root
#spring.datasource.password=root
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver

参数

http://127.0.0.1/car/1111/owner/tiantian?age=3

package com.example.demo.controller;

import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;


@RestController
public class HelloController {
    @RequestMapping("/")
    public String handle01() {
        return "Hello World";
    }

    @GetMapping("/car/{id}/owner/{name}")
    public Map<String, Object> getCar(
            @PathVariable("id") Integer id,
            @PathVariable("name") String name,
            @RequestParam("age") Integer age
    ) {
        Map<String, Object> map = new HashMap<>();
        map.put("id", id);
        map.put("name", name);
        map.put("age", age);
        System.out.println(map);
        return map;
    }

    @PostMapping("/save")
    public Map postMethod(@RequestBody String content) {
        Map<String, Object> map = new HashMap<>();
        map.put("content", content);
        return map;

    }
}

web 开发

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

@RestController

    @RequestMapping("/logo.png")
    public String hello() {
        return "hello";
    }
package com.example.boot.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class HelloController {
    @RequestMapping("/logo.png")
    public String hello() {
        return "hello";
    }
}

http://127.0.0.1:8080/logo.png
application.properties
静态资源前缀



spring.mvc.static-path-pattern=/static/**
spring.mvc.resources.static-locations=[classpath:/hello/]

http://127.0.0.1:8080/static/logo.png

hello world

spring boot hello world
  • 测试url
http://127.0.0.1/car/1111/owner/tiantian?age=3

fetch("/save",{
  method:'POST',body:JSON.stringify({"a":111})
}).then(function(res){
console.log(res)
})
  • 新建controller包
package com.example.demo.controller;

import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;


@RestController
public class HelloController {
    @RequestMapping("/")
    public String handle01() {
        return "Hello World";
    }

    @GetMapping("/car/{id}/owner/{name}")
    public Map<String, Object> getCar(
            @PathVariable("id") Integer id,
            @PathVariable("name") String name,
            @RequestParam("age") Integer age
    ) {
        Map<String, Object> map = new HashMap<>();
        map.put("id", id);
        map.put("name", name);
        map.put("age", age);
        System.out.println(map);
        return map;
    }

    @PostMapping("/save")
    public Map postMethod(@RequestBody String content) {
        Map<String, Object> map = new HashMap<>();
        map.put("content", content);
        return map;

    }
}

  • main下resource新建 application.properties

server.port=80
学习教程2018

https://www.bilibili.com/video/BV1gW411W76m?p=2&spm_id_from=pageDriver

spring boot 缺点入门容易精通难
是基于spring的再封装
在这里插入图片描述

环境

https://start.spring.io/

java 版本 http://jdk.java.net/
mac jdk 11 https://www.oracle.com/java/technologies/downloads/#java11-mac
https://www.oracle.com/java/technologies/downloads/#license-lightbox

在这里插入图片描述

starter 启动器

spring-boot-starter 场景启动器

https://developers.google.com/blockly
https://www.cnblogs.com/hellokuangshen/tag/SpringBoot系列/

springboot 会自动扫描包
SpringBootApplication

SpringBootApplication 主配置类

spring注解版 07
配置文件

application.properties

server.port=9999

在这里插入图片描述

JSR303
多配置文件

启动配置 --spring.profiles.active=dev
在这里插入图片描述
在这里插入图片描述

server:
  port: 9996
spring:
  profiles:
    active: prod

person:
  name: "haha"
  age: 11

dog:
  name: ahuang
  age: 2

---
server:
  port: 996
spring:
  profiles: dev

---
server:
  port: 997
spring:
  profiles: prod

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值