Spring Boot統合xml方式を用いたMyBatis

5785 ワード

公式サイトにspring bootプロジェクトを新規作成し、IDEにインポート
コンフィギュレーション
  • pomファイルに依存
  • を追加
    
    
        
            org.springframework.boot
            spring-boot-starter-jdbc
        
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            1.3.1
        
    
        
            mysql
            mysql-connector-java
        
    
    
    
  • application.propertiesファイルでデータソースとmybatisスキャンパスとプロファイルパス
  • を構成する.
    spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
    spring.datasource.username=root
    spring.datasource.password=root
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    
    mybatis.configLocation=classpath:MybatisConfig.xml
    mybatis.mapperLocations=classpath:mapping/*.xml
    
  • resourcesフォルダにmappingフォルダとMybatisConfig.xmlプロファイル
  • を追加
    MybatisConfig.xmlファイル
    
    
    
    
    
  • 自動スキャン
  • を構成する.
    @SpringBootApplication
    @MapperScan("com.learn.dao")
    public class Application {
        public static void main(String[] args) {
            SpringApplication.run(Application.class, args);
        }
    }
    

    MyBatisの使用
  • Mysqlには、id(BIGINT)、name(VARCHAR)、age(INT)フィールドを含むUserテーブルが作成される.同時に、マッピングオブジェクトUser
  • を作成する.
    public class User {
    
        private Long id;
        private String name;
        private Integer age;
    
        // getter setter
    
    }
    
  • Userマッピングの操作UserMapperを作成し、後続ユニットのテスト検証のために、挿入と照会の操作
  • を実現する.
    package com.learn.dao;
    
    public interface UserMapper {
    
        User findByName(@Param("name") String name);
    
        int insert(@Param("name") String name, @Param("age") Integer age);
        
    }
    
  • mappingフォルダにマッピングファイルUserMapper.xml
  • を作成する
    
    
    
    
        
    
        
          INSERT INTO USER(NAME, AGE) VALUES(#{name}, #{age})
        
    
    
    
  • ユニットテストの作成
  • テストロジック:name=AAA、age=20のレコードを挿入し、name=AAAに基づいてクエリーし、ageが20
  • であるかどうかを判断する.
  • テストはロールバックデータを終了し、テストユニットが毎回運行するデータ環境が独立して
  • であることを保証する.
    @RunWith(SpringRunner.class)
    @SpringBootTest
    @Transactional
    public class ApplicationTests {
    
        @Autowired
        private UserMapper userMapper;
    
        @Test
        @Rollback
        public void findByName() throws Exception {
            userMapper.insert("AAA", 20);
            User u = userMapper.findByName("AAA");
            Assert.assertEquals(20, u.getAge().intValue());
        }
    
    }
    

    ページをめくるプラグインを追加
  • pomファイルに依存
  • を加える.
    
        
        
            com.github.miemiedev
            mybatis-paginator
            1.2.17
        
    
    
  • MybatisConfig.xmlに
  • を加える
    
      
        
          
        
      
    
    
  • UserMapperにインタフェースfindAll
  • を追加する.
    public interface UserMapper {
        List findAll(PageBounds pageBounds);
    }
    
  • UserMapper.xmlにマッピング
  • を追加
    
        
    
    
  • テストケース
  • を作成
    @RunWith(SpringRunner.class)
    @SpringBootTest
    @Transactional
    public class ApplicationTests {
    
        @Resource
        private UserMapper userMapper;
    
        @Test
        @Rollback
        public void findAll() throws Exception {
            userMapper.insert("  ", 21);
            userMapper.insert("  ", 22);
            userMapper.insert("  ", 23);
            userMapper.insert("  ", 24);
            userMapper.insert("  ", 25);
            userMapper.insert("  ", 26);
            userMapper.insert("  ", 27);
            PageBounds pageBounds = new PageBounds(1, 5, Order.formString("age.desc"));
            PageList users = (PageList) userMapper.findAll(pageBounds);
            System.out.println("--------------------page-------------------------");
            System.out.println(users);
            System.out.println("   :" + users.getPaginator().getTotalCount());
            System.out.println("   :" + users.getPaginator().getTotalPages());
            System.out.println("   :" + users.getPaginator().getPage());
            System.out.println("    :" + users.getPaginator().getLimit());
            System.out.println("--------------------end-------------------------");
        }
    }
    

    実行結果を表示
    --------------------page-------------------------
    [User{id=58, name='  ', age=27}, User{id=57, name='  ', age=26}, User{id=56, name='  ', age=25}, User{id=55, name='  ', age=24}, User{id=54, name='  ', age=23}]
       :7
       :2
       :1
        :5
    --------------------end-------------------------
    

    プロジェクトアドレス