介绍
添加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模版的使用
来源:oschina
链接:https://my.oschina.net/berzhuan/blog/4298398