SSM框架通用mapper的使用

ssm框架使用mapper步骤:

1.与实体类进行关联转换
2.定义实体类的mapper接口(继承Mapper< T >)
3.调用上一步的mapper接口进行crud

步骤1

实体类与数据库表进行关联如:

@Table(name = "tb_item")
public class Item  {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    private String title;

    private String sellPoint;

    private Long price;

    private Integer num;

    private String barcode;

    private String image;

    private Long cid;

    private Integer status;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getSellPoint() {
        return sellPoint;
    }

    public void setSellPoint(String sellPoint) {
        this.sellPoint = sellPoint;
    }

    public Long getPrice() {
        return price;
    }

    public void setPrice(Long price) {
        this.price = price;
    }

    public Integer getNum() {
        return num;
    }

    public void setNum(Integer num) {
        this.num = num;
    }

    public String getBarcode() {
        return barcode;
    }

    public void setBarcode(String barcode) {
        this.barcode = barcode;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public Long getCid() {
        return cid;
    }

    public void setCid(Long cid) {
        this.cid = cid;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

}

注意:
1.到item实体类上有一个@Table(name = “tb_item”)的注解,这个是JPA的注解,此标记需要标注在类名前,不能标注在方法或属性前, name属性表示实体所对应表的名称,默认表名为实体的名称且不区分大小写。
2.id主键字段上有一个@id注解和
@GeneratedValue(strategy = GenerationType.IDENTITY),前者表示该属性对应表的主键字段,后者注解为一个实体生成一个唯一标主键的生成策略,此种主键生成策略就是通常所说的主键自增长,数据库在插入数据时,会自动给主键赋值,比如MYSQL可以在创建表时声明"auto_increment" 来指定主键自增长。
其他的字段上面并没有注解原因是:1.表名默认使用类名,驼峰转下划线(只对大写字母进行处理),如UserInfo默认对应的表名为user_info。

事实上实体类与表的关联有如下原则:

  1. 表名默认使用类名,驼峰转下划线(只对大写字母进行处理),如UserInfo默认对应的表名为user_info。
  2. 表名可以使用@Table(name = “tableName”)进行指定,对于不符合上面原则的表可以采用这种形式。
  3. 表字段默认为Java对象的Field名字驼峰转下划线形式.可以使用@Column(name = “fieldName”)来指定不符合驼峰转下划线的字段。
  4. 使用@Transient注解可以忽略字段,添加该注解的字段不会作为表字段使用。
  5. 建议一定是有一个@Id注解作为主键的字段,可以有多个@Id注解的字段作为联合主键,并使用id自增长@GeneratedValue(strategy = GenerationType.IDENTITY)。

步骤2

定义实体类的mapper接口(继承Mapper< T >)
如:


public interface ItemMapper extends Mapper<Item> {
//除了通用mapper之外的方法需要自己写
}

通用mapper提供的方法:

一旦继承了Mapper<T>,继承的Mapper就拥有了以下通用的方法:
//根据实体类不为null的字段进行查询,条件全部使用=号and条件
List<T> select(T record);

//根据实体类不为null的字段查询总数,条件全部使用=号and条件
int selectCount(T record);

//根据主键进行查询,必须保证结果唯一
//单个字段做主键时,可以直接写主键的值
//联合主键时,key可以是实体类,也可以是Map
T selectByPrimaryKey(Object key);

//插入一条数据
//支持Oracle序列,UUID,类似Mysql的INDENTITY自动增长(自动回写)
//优先使用传入的参数值,参数值空时,才会使用序列、UUID,自动增长
int insert(T record);

//插入一条数据,只插入不为null的字段,不会影响有默认值的字段
//支持Oracle序列,UUID,类似Mysql的INDENTITY自动增长(自动回写)
//优先使用传入的参数值,参数值空时,才会使用序列、UUID,自动增长
int insertSelective(T record);

//根据实体类中字段不为null的条件进行删除,条件全部使用=号and条件
int delete(T key);

//通过主键进行删除,这里最多只会删除一条数据
//单个字段做主键时,可以直接写主键的值
//联合主键时,key可以是实体类,也可以是Map
int deleteByPrimaryKey(Object key);

//根据主键进行更新,这里最多只会更新一条数据
//参数为实体类
int updateByPrimaryKey(T record);

//根据主键进行更新
//只会更新不是null的数据
int updateByPrimaryKeySelective(T record);

//根据Exmaple条件查询总数
int selectCountByExample(Object example);

//根据Exmaple条件删除
int deleteByExample(Object example);

//根据Exmaple条件查询
List<T> selectByExample(Object example);

//根据Exmaple条件更新非空(null)字段
int updateByExampleSelective(@Param("record") T record, @Param("example") Object example);

//根据Exmaple条件更新全部字段
int updateByExample(@Param("record") T record, @Param("example") Object example);

步骤3

调mapper接口进行crud操作
在此之前需要在需要说明:在spring4以后支持泛型注入。
在spring中扫描mapper接口包:

<!--扫描mapper的接口包  -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
	<!--包所在位置  -->
		<property name="basePackage" value="com.xxx.mapper"/>
	</bean>

service中注入实现泛型注入mapper接口:
普通的注入如下:

  @Autowired 
	private ItemMapper itemMapper;

泛型注入如下:

 @Autowired 
	private Mapper<Item> mapper;

只需要执行mapper泛型,spring就会自动取mapper接口包下找到ItemMapper接口。

最后便可调用步骤2中的mapper方法进行数据库操作了。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值