Java Spring Boot VS .NetCore (五)MyBatis vs EFCore

 

Java Spring Boot VS .NetCore (一)來一個簡單的 Hello Worldhtml

Java Spring Boot VS .NetCore (二)實現一個過濾器Filterjava

Java Spring Boot VS .NetCore (三)Ioc容器處理mysql

Java Spring Boot VS .NetCore (四)數據庫操做 Spring Data JPA vs EFCorespring

Java Spring Boot VS .NetCore (五)MyBatis vs EFCoresql

Java Spring Boot VS .NetCore (六) UI thymeleaf vs cshtml數據庫

Java Spring Boot VS .NetCore (七) 配置文件mybatis

Java Spring Boot VS .NetCore (八) Java 註解 vs .NetCore Attributeapp

Java Spring Boot VS .NetCore (九) Spring Security vs .NetCore Securitydom

Java Spring Boot VS .NetCore (十) Java Interceptor vs .NetCore Interceptoride

Java Spring Boot VS .NetCore (十一)自定義標籤 Java Tag Freemarker VS .NetCore Tag TagHelper

介紹

添加MyBatis先關的依賴包

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
 </dependency>
 <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.1</version>
 </dependency>

MyBatis

有兩種配置方式 一種是經過XML來實現 相關操做 解耦性相對較強,第二種則是以註解的方式來實現,這裏已第二種方式說明

使用這種方式還須要配置下 指向實體類的包路徑

mybatis.type-aliases-package=com.liyouming.demo.domain.Entitys

在 啓動入口裏面添加註解指向 Mapper操做功能包地址

@MapperScan("com.liyouming.demo.Mapper")

下面的代碼是功能類User  直接能夠經過註解的方式完成相關方法的操做

public interface UserMapper  {
    @Select("SELECT username,email,newname,nick_name FROM user_model")
    @Results({
            @Result(property = "username",  column = "username"),
            @Result(property = "email",  column = "email"),
            @Result(property = "newname",  column = "newname"),
            @Result(property = "nickName", column = "nick_name")
    })
    List<UserModel> getAll();

    @Select("SELECT * FROM user_model WHERE id = #{id}")
    @Results({
            @Result(property = "username",  column = "username"),
            @Result(property = "email",  column = "email"),
            @Result(property = "newname",  column = "newname"),
            @Result(property = "nickName", column = "nick_name")
    })
    UserModel getOne(Long id);

    @Insert("INSERT INTO user_model(username,email,newname) VALUES(#{username}, #{email}, #{newname})")
    void insert(UserModel user);
//    @SelectProvider(type = CustomSql.class, method = "getList")
//    List<UserModel> getList(UserModel userParam);
}

EFCore

其實也有相關配置文件,只是平時都是用的直接根據實體生成的方式,若是須要配置怎麼處理,使用查詢ORM映射處理後的結果對應放在類裏面的哪些字段,能夠經過System.ComponentModel.DataAnnotations.Schema 引用下的標籤工鞥來完成

固然EFCore 提供了配置處理 在數據庫上下文對象中 重寫 實現OnModelCreating 其中 ModelBuilder 類提供了添加配置的方法

protected override void OnModelCreating(ModelBuilder builder)
        {
            builder.ApplyConfiguration(new ClassMap());
}

ClassMap 只須要實現 IEntityTypeConfiguration 接口,實現Configure 方法來實現配置映射關係 以下:

 public class ClassMap : IEntityTypeConfiguration<ClassModel>
    {
        public void Configure(EntityTypeBuilder<ClassModel> builder)
        {
            builder.ToTable("Express_Class").HasKey(x => x.Id);
            builder.Property(c => c.ClassName).HasColumnName("Class_Name").HasColumnType("varchar").HasMaxLength(200);
           
        }
    }

很清楚的能夠看出來  實體類與表之間的映射關係 以及字段名稱、類型、長度等配置,固然這一步不須要 MyBatis那麼複雜 EFCore經過這種關係已經幫咱們實現了映射關係,而MyBatis 則須要使用註解的方式指定(@Results)指定屬性與字段列之間的關係

 單元測試

 @Test
    public  void testMapper()
    {
       UserModel model= userMapper.getOne((long)1);
       System.out.print(model.getEmail());
    }

能夠獲得咱們想要的結果 Ok ,作完了這些,咱們是否是應該處理下界面的問題了,下一章主要說明下thymeleaf模版的使用

相關文章
相關標籤/搜索