springBoot第二種配置文件yaml書寫方式及讀取數據、整合myBatis和整合junit


一、yaml文件格式:key-value形式;可以表示對象 集合

  1、語法:key:value 冒號后面必須跟一個空格再寫value值

    key1:

      key2:

        key3:value

  2、屬性取值:a、可以使用@Valu注解取值--@Value("${page.rows}")

          b、使用 ConfigurationProperties把屬性的值批量綁定一個對象上

一、編寫yaml格式文件,並配置數據庫鏈接
#DB Configuration:
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/springboot
    username: root
    password: 169695
#JPA Configuration:
  jpa:
    database: mysql
    show-sql: true
    generate-ddl: true
page:
  rows: 22
person:
  name: 張無忌
  age: 14
  sex: 男
  address: 光明頂
  myAddress:
    - "北京"
    - "地球"
    - "日本"
  #myAddress: ["北京","地球","日本"]
二、編寫person實體類;page:rows:22這個不用寫實體類可以直接取直
package cn.zrf.entity;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.List;
@Component
@ConfigurationProperties(prefix = "person")把屬性的值批量綁定對象person上
public class Person {
    private String name;
    private String age;
    private String sex;
    private String address;

    private String[] myAddress;
//    private List<String> myAddress;

    public String[] getMyAddress() {
        return myAddress;
    }

    public void setMyAddress(String[] myAddress) {
        this.myAddress = myAddress;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name=" + name + '\'' +
                ", age='" + age + '\'' +
                ", sex='" + sex + '\'' +
                ", address='" + address + '\'' +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAge() {
        return age;
    }

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

    public String getSex() {
        return sex;
    }

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

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

}
三、編寫controller取出數據
@RestController
public class ShowUserController {
    @Value("${page.rows}")
    private String rows;
    @Autowired
    Person person;
    //yml格式讀取數據配置文件數據
    @RequestMapping("/page/rows")
//    @ResponseBody
    public Map showRows(){
        Map map = new HashMap();
        map.put("rows",rows);
        return map;
    }
    //yml格式配置文件讀取(定義實體類法)
    @RequestMapping("/person")
    public Person showPerson(){
        return person;
    }
}

 

二、springBoot整合myBatis

  myBatis使用步驟:添加mybatis的起步依賴》》在配置文件中 配置數據源信息》》編寫實體 類 、mapper接口、 mapper 映射文件》》手動配置mybatis包的掃描器:在啟動類上加一個注解   @MapperScan(basePackages    = "cn.zrf.mapper")、還需要在pom.xml文件中添加build  標記和里面的內容》》編寫controller

一、添加起步依賴在pom中
<!--mybatis  起步依賴-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>
二、插入build標記用來打包mapper接口的myBatis映射文件
<build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>false</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.*</include>
                </includes>
                <filtering>false</filtering>
            </resource>
        </resources>

    </build>
三、編寫實體類並實現Serializable 序列化接口
package cn.zrf.entity;

import java.io.Serializable;

public class MyBatisUser implements Serializable {
    private int id;
    private String username;
    private String sex;

    public int getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

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

    public String getSex() {
        return sex;
    }

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

    @Override
    public String toString() {
        return "MyBatisUser{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", sex='" + sex + '\'' +
                '}';
    }
}
四、編寫myBatis的操作數據庫接口(mapper包也就是原先的dao層)及映射文件
接口:
package cn.zrf.mapper;

import cn.zrf.entity.MyBatisUser;
import org.springframework.stereotype.Repository;

import java.util.List;
@Repository
public interface MyBatisUserMapper {
    //查詢所有
    List<MyBatisUser> getUserList();
}
映射文件:sql語句
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="cn.zrf.mapper.MyBatisUserMapper">
    <select id="getUserList" resultType="cn.zrf.entity.MyBatisUser">
        select * from user
    </select>
</mapper>
五、編寫controller
    @Autowired
    MyBatisUserMapper myBatisUserMapper;
//整合MyBatis查詢所有
    @RequestMapping("/mybatis/userList")
    public List<MyBatisUser> myBatisUserList(){
        List<MyBatisUser> userList = myBatisUserMapper.getUserList();
        return userList;
    }
六、編寫啟動器
package cn.zrf;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan(basePackages = "cn.zrf.mapper")
public class HelloApplication {
    public static void main(String[] args) {
        SpringApplication.run(HelloApplication.class,args);
    }
}

 

三、springBoot整合junit 

  使用步驟:添加起步依賴》》創建一個測試類》》在測試類上添加注解:@SpringBootTest和@RunWith(SpringRunner.class)》》在測試類注入 需要使用的對象即可

一、添加起步依賴
<!--測試的起步依賴-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
二、實體類、操作數據庫接口及配置文件使用上方的

service層寫了個修改的方法也就是測試類內容,在測試類掉用直接修改;可在測試類直接書寫 package cn.zrf.service;

import cn.zrf.dao.UserDao;
import cn.zrf.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.Optional;

@Service
public class UserService {
    @Autowired
    UserDao userDao;

    public void updateUsername(){
        //根據ID查找用戶;獲得用戶對象
        Optional<User> optional = userDao.findById(2);
        User user = optional.get();
        //根據獲得的用戶對象修改姓名
        user.setUsername("孫悟空"); userDao.save(user); } }

三、編寫測試類
package cn.zrf;

import cn.zrf.entity.MyBatisUser;
import cn.zrf.mapper.MyBatisUserMapper;
import cn.zrf.service.UserService;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import java.util.List;


@RunWith(SpringRunner.class)
@SpringBootTest(classes = HelloApplication.class)
public class UserTest {
    @Autowired
    private MyBatisUserMapper myBatisUserMapper;
    @Autowired UserService userService; //查詢所有
    @Test
    public void userListTest(){
        List<MyBatisUser> userList = myBatisUserMapper.getUserList();
        for (MyBatisUser myBatisUser:userList){
            System.out.println(myBatisUser);
        }
    }
    //修改
    @Test
    public void updateTest(){ userService.updateUsername(); }
}

 

四、springBoot使用技巧

  事物管理
​       在開啟事物的方法上添加@Transactional  注解即可
​       如果springBoot版本是2.0以下
​       需要 在啟動類上添加注解@EnableTransactionManagement


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM