介绍
添加MyBatis先关的依赖包
mysql
mysql-connector-java
5.1.38
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.1
MyBatis
有两种配置方式 一种是通过XML来实现 相关操作 解耦性相对较强,第二种则是以注解的方式来实现,这里已第二种方式说明
使用这种方式还需要配置下 指向实体类的包路径
mybatis.type-aliases-package=com.liyouming.demo.domain.Entitys
在 启动入口里面添加注解指向 Mapper操作功能包地址
@MapperScan("com.liyouming.demo.Mapper")
下面的代码是功能类User 直接可以通过注解的方式完成相关方法的操作
public interfaceUserMapper {
@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")
})
ListgetAll();
@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})")voidinsert(UserModel user);//@SelectProvider(type = CustomSql.class, method = "getList")//List getList(UserModel userParam);
}
EFCore
其实也有相关配置文件,只是平时都是用的直接根据实体生成的方式,如果需要配置怎么处理,使用查询ORM映射处理后的结果对应放在类里面的哪些字段,可以通过System.ComponentModel.DataAnnotations.Schema 引用下的标签工鞥来完成
当然EFCore 提供了配置处理 在数据库上下文对象中 重写 实现OnModelCreating 其中 ModelBuilder 类提供了添加配置的方法
protected override voidOnModelCreating(ModelBuilder builder)
{
builder.ApplyConfiguration(newClassMap());
}
ClassMap 只需要实现 IEntityTypeConfiguration 接口,实现Configure 方法来实现配置映射关系 如下:
public class ClassMap : IEntityTypeConfiguration{public void Configure(EntityTypeBuilderbuilder)
{
builder.ToTable("Express_Class").HasKey(x =>x.Id);
builder.Property(c=> c.ClassName).HasColumnName("Class_Name").HasColumnType("varchar").HasMaxLength(200);
}
}
很清楚的可以看出来 实体类与表之间的映射关系 以及字段名称、类型、长度等配置,当然这一步不需要 MyBatis那么复杂 EFCore通过这种关系已经帮我们实现了映射关系,而MyBatis 则需要使用注解的方式指定(@Results)指定属性与字段列之间的关系
单元测试
@Testpublic voidtestMapper()
{
UserModel model= userMapper.getOne((long)1);
System.out.print(model.getEmail());
}
可以得到我们想要的结果 Ok ,做完了这些,我们是不是应该处理下界面的问题了,下一章主要说明下thymeleaf模版的使用