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>
有两种配置方式 一种是经过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); }
其实也有相关配置文件,只是平时都是用的直接根据实体生成的方式,若是须要配置怎么处理,使用查询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模版的使用