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

1、yaml文件格式:key-value形式;能夠表示對象 集合java

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

    key1:spring

      key2:sql

        key3:value數據庫

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

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

1、編寫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: ["北京","地球","日本"] 2、編寫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; } } 3、編寫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; } }

 

2、springBoot整合myBatisapp

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

1、添加起步依賴在pom中 <!--mybatis  起步依賴-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency> 2、插入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> 3、編寫實體類並實現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 + '\'' + '}'; } } 4、編寫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> 5、編寫controller @Autowired MyBatisUserMapper myBatisUserMapper; //整合MyBatis查詢全部 @RequestMapping("/mybatis/userList") public List<MyBatisUser> myBatisUserList(){ List<MyBatisUser> userList = myBatisUserMapper.getUserList(); return userList; } 6、編寫啓動器 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); } }

 

3、springBoot整合junit spring-boot

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

1、添加起步依賴 <!--測試的起步依賴-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency> 2、實體類、操做數據庫接口及配置文件使用上方的 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); } } 3、編寫測試類 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(); } }

 

4、springBoot使用技巧

  事物管理
​       在開啓事物的方法上添加@Transactional  註解便可
​       若是springBoot版本是2.0如下
​       須要 在啓動類上添加註解@EnableTransactionManagement
相關文章
相關標籤/搜索