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


 

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

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

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

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

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

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

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

Java Spring Boot VS .NetCore (八) Java 注解 vs .NetCore Attribute

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

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

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模版的使用

 
       


免責聲明!

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



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