Jt_京淘代码

1 day01

1.1 @SpringBootApplication启动类

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan

1.2 SpringMVC的的过程

1.3 Pom.xml的理解

2 day02

2.1 配置文件赋值操作

1.入门获取IP和端口号

package com.jt.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

//@Controller          //String类型/moduleAndView
public class RedisController {
    private String host = "127.0.0.1";
    private Integer port = 6379;
    //如果使用RestController 返回值为String类型则返回字符串本身
    //如果返回的是一个对象 则结果必然是该对象的JSON数据.
    @RequestMapping("/getMsg")
    public String getMsg(){
        return host + ":" + port;
    }
}
  1. @Value注解属性赋值
package com.jt.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

@RestController        //@ResponseBody 将返回值转化为json串使用 程序将不会执行视图解析器 直接返回
//@Controller          //String类型/moduleAndView
public class RedisController {

    /**
     * 实现思路:
     *   如果可以从容器中获取数据的化,直接赋值给属性.则可以实现解耦
     * 如何实现:
     *      注解实现: @Value("${配置文件的key}")
     * 表达式:  spel 表达式
     */

    @Value("${redis.host}")
    private String host;
    @Value("${redis.port}")
    private Integer port;

    //如果使用RestController 返回值为String类型则返回字符串本身
    //如果返回的是一个对象 则结果必然是该对象的JSON数据.
    @RequestMapping("/getMsg")
    public String getMsg(){
        return host + ":" + port;
    }
}

3.利用properties文件为属性赋值(配置文件+controller)
redis.properties

redis.pro.host=redis的配置文件
redis.pro.port=6379

controller

@RestController
//需要通过spring容器加载配置文件,并且以utf-8的格式进行加载
@PropertySource(value="classpath:/properties/redis.properties",encoding = "UTF-8")
public class RedisProController {
    @Value("${redis.pro.host}")
    private String proHost;
    @Value("${redis.pro.port}")
    private Integer proPort;
    
    @RequestMapping("/getMsgPro")
    public String getMsg2(){
        return proHost + ":" + proPort;
    }
}

4.SpringBoot环境切换问题(YML+controller)

# 该配置文件,当spring容器启动时加载.
spring:
  profiles:
    active: prod

---

# 定义开发环境
spring:
  profiles: dev

server:
  port: 8080

#配置redis节点信息
redis:
  host: 192.168.1.100
  port: 6379

# 如果需要多环境配置则需要将YML环境分割
---
spring:
  profiles: prod

server:
  port: 8090

#配置redis节点信息
redis:
  host: 10.0.0.1
  port: 6379

day03

3.1 SpringBoot整合Mybatis(pom-pojo-yml-mapper-server-controller)

1.pojo

package com.jt.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;
@Data   //动态生成get/set/toString/equals等方法
@Accessors(chain = true) //开启链式加载结构 重构了set方法可以连续.
@NoArgsConstructor  //无参构造 必须添加
@AllArgsConstructor //全参构造
public class User {
    //实体对象的属性类型应该都是包装类型  Integer null
    //int=0
    private Integer id;
    private String name;
    private Integer age;
    private String sex;

   /* 链式加载源码
        public User setId(Integer id){
        this.id = id;
        return this;
    }*/
}

2.yml

server:
  port: 8090
  servlet:
    context-path: /
spring:
  datasource:
    #驱动版本问题 高版本需要添加cj关键字  一般可以省略
    #driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/jtdb?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
    username: root
    password: root

mybatis:
  #别名包定义 Mapper的resultType中只需要写类名 之后自动拼接即可
  type-aliases-package: com.jt.pojo
  #加载指定的xml映射文件
  mapper-locations: classpath:/mybatis/mappers/*.xml
  #开启驼峰映射
  configuration:
    map-underscore-to-camel-case: true

3.mapper(UserMapper)

package com.jt.mapper;
import com.jt.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface UserMapper {
    @Select("select * from user")
    List findAll();
}

4.server(userService userServiceImpl)
1)userService

package com.jt.service;
import com.jt.pojo.User;
import java.util.List;
public interface UserService {
    List findAll();
}

2)userServiceImpl

package com.jt.service;
import com.jt.mapper.UserMapper;
import com.jt.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
    @Autowired
 private UserMapper userMapper;
    @Override
 public List findAll() {
        return userMapper.findAll();
    }
}

5.controller(UserController)

package com.jt.controller;
import com.jt.pojo.User;
import com.jt.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class UserController {
    @Autowired
 private UserService userService;
 /*
 写代码顺序A mapper接口---service---Controller---写页面js 自下而上的写法
 写代码顺序B Controller--service--mapper 自上而下
 */
 /* 业务说明:查询所有的User信息
 url路径:http://localhost:8090/findAll
 参数: 暂时没有
 返回值: userJosn信息
 */ @RequestMapping("/findAll")
    public List findAll(){
        return userService.findAll();
    }
}

3.2 SpringBoot整合MybatisPlus【ORM方式: 以对象的方法操作数据库】(pom-pojo-yml-mapper-server-controller)

说明:(在3.1的基础之上操作)
1)导jar包:mybatis-plus
2) 编辑POJO对象:@TableName("user") //标识对象与表的映射

            @TableId(type = IdType.AUTO)     //代表主键
            @TableField(value = "name")      //标识属性和字段:如果字段名称与属性的名称一致(包含驼峰规则),可以省略不写

3)实现接口继承:extends BaseMapper
4)编辑YML配置文件:mybatis-plus:

#实现sql打印
logging:
  level:
    com.jt.mapper: debug

5)ServiceImpl(UserServiceImpl)

 return userMapper.findAll();//Mybatis
 return userMapper.selectList(null);//MybatisPlus

3.2.1 MP API介绍

package com.jt;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.jt.mapper.UserMapper;
import com.jt.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Arrays;
import java.util.List;
@SpringBootTest
class SpringbootDemo2ApplicationTests {
    @Autowired
 private UserMapper userMapper;
    /**
 * 根据主键查询
 */
 @Test
 void select01() {
        User user = userMapper.selectById(21);
        System.out.println(user);
        Integer count = userMapper.selectCount(null);
        System.out.println(count);
    }
    /**
 * 需求:查询年龄=18的用户,同时要求性别为女
 * 条件构造器的作用 用来拼接where条件
 * sql: XXX where age>18 and sex="女"
 * 逻辑运算符: = eq,>gt,=ge,<=le
 */ @Test
 void select02() {
        QueryWrapper queryWrapper = new QueryWrapper<>();
        queryWrapper.gt("age",18)
                    .lt("age",2000)
                    .eq("sex","女");
        List userList = userMapper.selectList(queryWrapper);
        System.out.println(userList);
    }
    /**
 * 查询ID=1,3,5,6的数据
 * 单表查询:or in
 * sql: select * form where id(1,3,5,6)
 */
 @Test
 void select03() {
//        ArrayList idList = new ArrayList<>();
//        idList.add(1);
//        idList.add(3);
//        idList.add(5);
//        idList.add(7);
 Integer[] ids = {1, 3, 5, 7};
        List list = Arrays.asList(ids);
        List users = userMapper.selectBatchIds(list);
        System.out.println(users);
        //如果需要获取表中的第一列主键信息
 List list1 = userMapper.selectObjs(null);
        System.out.println(list1);
    }
    /**
 * 完成用户数据入库
 */
 @Test
 void select04() {
        User user = new User();
        user.setName("名媛")
            .setAge(80)
            .setSex("女");
        userMapper.insert(user);
    }
    /**
 * 更新操作
 * 个人建议:但凡更新操作时,最好自己手写
 * 需求:  需要将id=65的用户name=“名媛” 改为 “北京大爷”
 */ @Test
 void select05() {
        //1.根据对象中不为null的属性,当做set条件
//        User user = new User();
//        user.setId(65).setName("北京大爷");
//        userMapper.updateById(user);
 //1.参数1:需要修改的数据   参数2:修改的where条件
 User user = new User();
        user.setName("北京大爷");
        UpdateWrapper updateWrapper = new UpdateWrapper<>();
        updateWrapper.eq("name", "名媛");
        userMapper.update(user, updateWrapper);
    }
    /**
 * 删除操作:
 * 1.根据ID删除用户信息 65
 * 2.删除name=“名媛”的数据
 */
 @Test
 void select06() {
        userMapper.deleteById(65); //根据主键删除
 QueryWrapper queryWrapper = new QueryWrapper();
        queryWrapper.eq("name", "名媛");
        userMapper.delete(queryWrapper);
    }
}

3.3

你可能感兴趣的:(程序员)