Mybatis 基础(二)

MyBatis 通用 Mapper

MyBatis 通用 Mapper

不是表中字段的属性必须加 @Transient 注解

由于通用Mapper依赖JPA,所以还需要下载persistence-api-1.0.jar:
Maven 依赖

<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper</artifactId>
    <!-- 建议使用最新版本,最新版本请从项目首页查找 -->
    <version>x.x.x</version>
</dependency>

   <!--JPA 的注解-->
   <dependency>
       <groupId>javax.persistence</groupId>
       <artifactId>persistence-api</artifactId>
       <version>1.0</version>
       <scope>compile</scope>
   </dependency>

泛型(实体类)的类型必须符合要求

实体类按照如下规则和数据库表进行转换,注解全部是JPA中的注解:

1、表名默认使用类名,驼峰转下划线(只对大写字母进行处理),如UserInfo默认对应的表名为user_info。
2、表名可以使用@Table(name = “tableName”)进行指定,对不符合第一条默认规则的可以通过这种方式指定表名.
3、字段默认和@Column一样,都会作为表字段,表字段默认为Java对象的Field名字驼峰转下划线形式.
4、可以使用@Column(name = “fieldName”)指定不符合第3条规则的字段名
5、使用@Transient注解可以忽略字段,添加该注解的字段不会作为表字段使用.
6、建议一定是有一个@Id注解作为主键的字段,可以有多个@Id注解的字段作为联合主键.
7、默认情况下,实体类中如果不存在包含@Id注解的字段,所有的字段都会作为主键字段进行使用(这种效率极低).
8、实体类可以继承使用,可以参考测试代码中的tk.mybatis.mapper.model.UserLogin2类.
9、由于基本类型,如int作为实体类字段时会有默认值0,而且无法消除,所以实体类中建议不要使用基本类型.
10、@NameStyle注解,用来配置对象名/属性名和表名/字段之间的转换方式,该注解优先于全局配置style,可选值:
normal:使用实体类名/属性名作为表名/字段名
camelhump:这是默认值,驼峰转换为下划线形式
uppercase:转换为大写
lowercase:转换为小写

spring boot 使用方式:

+ 添加起步依赖
+ 创建POJO 并且一定要使用JPA注解进行映射(数据库表和POJO的属性建立映射关系)
+ 创建接口 继承Mapper<T>即可
+ 【一定要】使用通用的mapper的组件扫描注解 Mapper接口所在的包

1、起步依赖

        <!--通用mapper起步依赖-->
        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <version>2.0.4</version>
        </dependency>
        <!--MySQL数据库驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--mybatis分页插件-->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper-spring-boot-starter</artifactId>
            <version>1.2.3</version>
        </dependency>

2、创建pojo

@Table(name="tb_brand")
public class Brand implements Serializable{
	@Id
	private Integer id;//品牌id
	private String name;//品牌名称
	private String image;//品牌图片地址
	private String letter;//品牌的首字母
	private Integer seq;//排序
	
	// getter and setter  .....(省略)
}

@Table和@Id都是JPA注解,@Table用于配置表与实体类的映射关系,@Id用于标识主键属性。

3、创建接口

//标识操作的是哪个表
public interface BrandMapper extends Mapper<Brand> {
}

继承了Mapper接口,就自动实现了增删改查的常用方法。

4、通用的mapper的组件扫描

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import tk.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
@EnableEurekaClient
//使用tk包下的注解
@MapperScan(basePackages = "com.cg.goods.dao") 
public class GoodsApplication {
    public static void main(String[] args) {
        SpringApplication.run(GoodsApplication.class);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值