Spring Boot 2(一):Spring Boot 2を使用してMybatisインフラストラクチャを統合


倉庫住所:spring-boot-learning star、forkを歓迎して、作者にいくつかの励ましをあげます
前言
Mybatisは初期に使用するのが面倒で、さまざまなプロファイル、エンティティクラス、Daoレイヤマッピング関連、その他の構成を大きくプッシュする必要があります.mybatis-spring-boot-starter Spring Boot+Mybatisは、プロファイルを使わずに完全に注釈できますし、簡単に構成できます.
mybatis-spring-boot-starter
公式説明:MyBatis Spring-Boot-Starter will help you use MyBatis with Spring Bootは実はMybatisがSpring Bootがこんなに熱くても解決策を開発してにぎやかになったのを見ていますが、このコンパクトは確かに多くの問題を解決して、使うのは確かにスムーズです.mybatis-spring-boot-starterには主に2つの解決策があり、1つは注釈を使用してすべての問題を解決することであり、1つは簡略化された古い伝統である.
もちろん、どのモードでもまずmybatis-spring-boot-starterのPomファイルを導入する必要がありますが、現在の最新バージョンは2.0です.1

    org.mybatis.spring.boot
    mybatis-spring-boot-starter
    2.0.1

私が一般的に使っているのはXML極簡モードですが、以前使っていたhibernateが慣れているせいか
極簡xmlバージョン
極めて簡単なxmlバージョンはマッピングファイルの古い伝統を維持し、インタフェース層は空の方法を定義するだけで、システムは自動的に方法名に基づいてマッピングファイルの中で対応するSqlを探す.
1関連するMavenファイルの追加

        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.0.1
        
        
            mysql
            mysql-connector-java
            runtime
        
        
            org.projectlombok
            lombok
            true
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

完全なPomバッグはここで貼らないで、みんなは直接ソースコードを見ます
2、application.yml関連配置application.ymlを使用して配置することを推奨しますが、実際にはapplication.ymlまたはapplication.propertiesを使用するのは同じ効果で、application.ymlは最終的にapplication.propertiesに変換して有効になりますが、application.ymlの視覚効果はより明らかに見えます.新規プロジェクトのデフォルトはapplication.propertiesで、直接application.ymlに変更され、またapplication-test.ymlのユーザーが異なる環境で異なるプロファイルを使用するために追加されました.application.yml構成:
#       test
spring:
  profiles:
    active: test

#  Mybatis
mybatis:
  type-aliases-package: com.niaobulashi.entity
  mapper-locations: classpath:mapper/*.xml
  configuration:
    #         , :Table(create_time) -> Entity(createTime)。               ,mybatis     `        `
    map-underscore-to-camel-case: true

#  SQL  
logging:
  level:
    com.niaobulashi.dao: DEBUG
application-test.yml構成:
spring:
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

Spring Bootはspring.datasource.*関連構成を自動的にロードし、データソースは自動的にsqlSessionFactoryに注入され、sqlSessionFactoryは自動的にMapperに注入されます.そう、あなたはすべて気にしないで、直接持って使えばいいです.
起動クラスにmapperパケットスキャン@MapperScanを追加
@SpringBootApplication
@MapperScan("com.niaobulashi.dao")
public class MybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(MybatisApplication.class, args);
    }

}

あるいは直接Mapperクラスに注釈@Mapperを追加して、上のものを使うことをお勧めします.そうしないと、mapperごとに注釈を追加するのも面倒です.
3、Userのインスタンスを追加する
@Data
public class SysUserEntity implements Serializable {
    private static final long serialVersionUID = 1L;
    //  ID
    private Long userId;

    //   
    private String username;

    //  
    private String password;

    // 
    private String salt;

    //  
    private String email;

    //   
    private String mobile;

    //    0:     1:  
    private Integer status;
    
    //    
    private Date createTime;
}

4、Userのマッピングファイルを追加する


    
    


実は前のバージョンのMapperのSqlをここのxmlに移しました
5、Mapper層のコードを書く
public interface SysUserDao {
    /**
     *   userId      
     * @param userId    ID
     */
    List queryUserInfo(Long userId);
}

6、サービス層のコード作成SysUserServiceインタフェースクラス:
public interface SysUserService {
    /**
     *          ID
     */
    List queryUserInfo(Long userId);
}
SysUserServiceImpl実装クラス:
@Service("sysUserService")
public class SysUserServiceImpl  implements SysUserService {
    @Resource
    private SysUserDao sysUserDao;
    /**
     *          ID
     * @param userId
     * @return
     */
    @Override
    public List queryUserInfo(Long userId) {
        return sysUserDao.queryUserInfo(userId);
    }
}

7、テスト
以上の5つのステップで基本的なインタフェースの開発が完了し,Controller層の開発を省くことができる.
@RunWith(SpringRunner.class)
@SpringBootTest
public class MabatisTest {
    private final static Logger logger = LoggerFactory.getLogger(MabatisTest.class);

    @Autowired
    private SysUserService sysUserService;

    @Test
    public void queryUserInfo() throws Exception {
        SysUserEntity userEntity = new SysUserEntity();
        userEntity.setUserId(1L);
        List list = sysUserService.queryUserInfo(userEntity.getUserId());
        logger.info("list:" + list);
    }

}

最後のプロジェクトディレクトリ構造
まとめ
SpringBootとMybatisのCP、完璧
サンプルコード-github