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