Spring Boot使用方法

Spring Boot 七步走。

1.勾选包

Spring Boot是自带TomCat的。

创建Spring Boot工程文件,创建时需要更改资源下载地址,我选择阿里云的这个地址;

Spring Boot使用方法_第1张图片

而且Spring Boot不需要导包,只需要勾选需要的包,进入后会自动下载(不过第一次非常非常慢!请耐心等待)。常用的需要勾选的包如下

Spring Boot使用方法_第2张图片

2.修改原始配置文件

2.1.修改spring-boot版本为2.2.6。

Spring Boot使用方法_第3张图片 

2.2.修改mysql版本为5.1.38。

2.3.将lombok下面的“true”那一行删掉。

Spring Boot使用方法_第4张图片 

2.4.将原有的application配置文件改为.yml后缀。

2.5.注意:后面的java文件全部都要写在自动生成的“项目名+Application”类的下一级,否则不能被读到。

Spring Boot使用方法_第5张图片 

2.6.application.yml配置文件内容

spring:
  application:
    name: myspb2
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://192.168.133.150:3306/mydemo
    username: root
    password: ok
server:
  port: 9988
mybatis:
  mapper-locations: classpath:mapper/*.xml
  config-location: classpath:mybatis.cfg.xml

3.实体类及配置文件

思路:本次需要用到两表关联查询、动态sql查询,所以建立对应着两张表的两个实体类、两个接口类、两个配置文件。

注:两张表提前已经建立了主外键关系,后面不再赘言。

3.1.实体类1:

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Userinfos {
    private long userid;
    private Date birthday;
    private String username;
    private List scores;//这是为了后面查询一个用户信息就能带出分数
}

3.2.实体类2:

@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class Scores {
    private long scid;
    private long userid;
    private long score;
}

4.接口dao类

对每个表有几种操作方法(增删改查),每一个方法对应一个配置文件中的sql语句

4.1.用户表对应dao接口类

public interface UserinfosMapper {
    public void addUser(Userinfos user);
    public void deleteUser(long userid);
    public List findUserByCondit(Userinfos user);//按条件查
}

4.2.分数表对应dao接口类

public interface ScoresMapper {
    public List findScoreByUserid(long userid);//查
    public void deleteScoreByUserid(long userid);//删
    public void modfiyScore(Scores scores);//改
    public void addScore(Scores scores);//增
}

5.配置文件

5.1.用mybatis.cfg.xml配置文件给实体类起别名,方便后续使用




    
        
        
    

5.2.分数表对应的配置文件

从上到下依次是查、增、删、改的sql语句。

为了防止输入错误,文件中的方法名可以复制粘贴。因为上面已经给实体类起过别名了,所以部分方法的属性值/返回值只需要写别名"score"(下面的"user"同理)




    
    
        insert into scores (userid,score) values (#{userid},#{score})
    
    
        delete from scores where userid=#{userid}
    
    
        update scores set score=#{score} where userid=#{userid}
    

5.3.用户表对应配置文件

从上到下是增、删、查方法。

查询方法在这里用到了关联查询和动态sql查询:

(1)关联查询:为了让查询用户的结果带上分数表的对应信息,返回值选用resultMap,返回一个名为“user_score”的东西,以“userid”关联到分数表。

(2)动态sql查询:若想查询一个表的所有列很简单,若想按某列为条件查询也很简单,但想要做到任意列为条件排列组合查询就需要写非常多条sql语句(如果一个表有4列,那么条件查询方式就会有16种,也就是需要写16条sql语句才能实现)。动态sql就是简化了这一过程,一个标签中每个标签下的语句都以and连接,如果检索存在就组合语句,如果不存在就当这个条件语句也不存在。




    
        
        
    
    
        insert into userinfos (username,birthday) values(#{username},#{birthday})
    
    
        delete from userinfos where userid=#{userid}
    
    

6.用服务类把上面的两表连起来

6.1.服务类接口

增(因为存在主外键,所以增加数据需要传两个参数)、删、改、查的方法。

public interface UserinfosService {
    public void addUserinfo(Userinfos user , Scores scores);
    public void delUserById(long userid);
    public void modifyScores(Scores scores);
    public List searchUser(Userinfos user);
}

6.2.接口实现类

检索两表对应的dao接口,并调用他们的增删改查方法,合并。

@Service
@Transactional//Spring自动提交事务
public class UserServiceImpl implements UserinfosService {
    @Resource//自动搜索及注入接口
    private UserinfosMapper userinfosMapper;
    @Resource
    private ScoresMapper scoresMapper;

    @Override
    public void addUserinfo(Userinfos user, Scores scores) {
        userinfosMapper.addUser(user);
        scores.setUserid(user.getUserid());//把主表中的主键拿出来填充到外表的外键列(如画图所讲)
        scoresMapper.addScore(scores);
    }

    @Override
    public void delUserById(long userid) {
        //先删从表再删主表
        scoresMapper.deleteScoreByUserid(userid);
        userinfosMapper.deleteUser(userid);
    }

    @Override
    public void modifyScores(Scores scores) {
        scoresMapper.modfiyScore(scores);
    }

    @Override
    public List searchUser(Userinfos user) {
        return userinfosMapper.findUserByCondit(user);
    }
}

7.控制类

@RestController
public class InitCtrl {
    @Resource
    private UserinfosService userinfosService;

    @RequestMapping("/add")
    public String add(String username,String birthday,long score){

        try {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            Userinfos us = Userinfos.builder().username(username).birthday(sdf.parse(birthday)).build();
            Scores scores = Scores.builder().score(score).build();
            userinfosService.addUserinfo(us,scores);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return "ok";
    }

    @RequestMapping("/del")
    public String del(long userid){
        userinfosService.delUserById(userid);
        return "ok";
    }

    @RequestMapping("/update")
    public String update(long userid,long score){
        Scores scores = Scores.builder().userid(userid).score(score).build();
        userinfosService.modifyScores(scores);
        return "ok";
    }

    @RequestMapping("/find")
    public List find(
            @RequestParam(required = false,defaultValue = "0")long userid,
            @RequestParam(required = false,defaultValue = "") String username,
            @RequestParam(required = false,defaultValue = "") String birthday){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Userinfos userinfos = new Userinfos();
        userinfos.setUserid(userid);
        if(!username.trim().equals("")){
            userinfos.setUsername(username);
        }
        try {
            if (!birthday.trim().equals("")){
                userinfos.setBirthday(sdf.parse(birthday));
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return userinfosService.searchUser(userinfos);
    }
}

注:

最后别忘了@MapperScan,把dao包也给Spring看一下。然后就可以运行这个main方法了。

Spring Boot使用方法_第6张图片

 最终在网页使用增删改查方法:

localhost:9988(你写的端口号是多少就是多少)/update?(想用哪个方法就写哪个注释)userid=1(这个方法有几个参数就写几个参数,之间用&连接)&score=80

除了查询方法,其他方法执行后若返回“ok”,查看数据库是否已经完成了操作,如果已经完成那就成功了。

你可能感兴趣的:(spring,boot,mybatis,java)