Mybatis通用Mapper介绍与使用

本文介绍了Mybatis通用Mapper的使用,旨在解决简单的增删改查操作的重复工作,提高开发效率。通过继承Mapper接口,无需手动编写SQL,只需实体类即可实现相应操作。文章涵盖了Maven依赖、数据库建表、Spring配置、实体类和DAO接口的设置,并讨论了遇到的问题和解决方案。
摘要由CSDN通过智能技术生成

前言

使用过jpa后再使用mybatis就会反感重复写xml文件里面的简单增删改查sql,一些复杂的特殊的业务逻辑sql当然是不可避免的,但是大量结构类似的增删改查SQL就是大大影响程序员的开发效率。而且,当数据库表结构改动时,对应的所有SQL以及实体类都需要更改。这时,通用Mapper便应运而生……

什么是通用Mapper

通用Mapper就是为了解决单表增删改查,基于Mybatis的插件。开发人员不需要编写SQL,不需要在DAO中增加方法,只要写好实体类,就能支持相应的增删改查方法。

Maven依赖
<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper</artifactId>
    <version>3.3.7</version>
    <exclusions>
        <exclusion>
            <artifactId>persistence-api</artifactId>
            <groupId>javax.persistence</groupId>
        </exclusion>
    </exclusions>
</dependency>

因为这个项目已经集成了jpa,javax.persistence的依赖已存在,故需要移除。如果项目没有这个jar,需要添加进来。

javax.persistence在实体类中会引用到其中的注解。


数据库建表语句
DROP TABLE IF EXISTS `fly_user`;
CREATE TABLE `fly_user` (
  `user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `user_name` varchar(255) NOT NULL COMMENT '用户名',
  `user_pwd` varchar(255) NOT NULL COMMENT '密码',
  `full_name` varchar(255) DEFAULT NULL COMMENT '真实姓名',
  `gender` varchar(255) DEFAULT NULL COMMENT '性别',
  `age` varchar(255) DEFAULT NULL COMMENT '年龄',
  `email` varchar(255) DEFAULT NULL,
  `address` varchar(255) DEFAULT NULL,
  `mobile` varchar(255) DEFAULT NULL,
  `location` varchar(255) DEFAULT NULL,
  `discuss_id` varchar(255) DEFAULT NULL,
  `img` mediumblob,
  PRIMARY KEY (`user_id`),
  UNIQUE KEY `user_name` (`user_name`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
spring配置
    <!-- mybatis通用 Mapper配置  类似mybatis的配置,只是org和tk的区别 -->
    <bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="org.fei.repository.mapper"></property>
        <property name="properties">
            <value>
                mappers=tk.mybatis.mapper.common.Mapper,tk.mybatis.mapper.common.special.InsertListMapper
            </value>
        </property>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>

实体类
package org.fei.domain;

import javax.persistence.*;
import java.io.Serializable;

@Table(name = "fly_user")
public class UserPO implements Serializable {

    @Id
    @GeneratedValue(generator = "JDBC")
    @Column(name = "user_id")
    private Integer userId;

    @Column(name = "user_name")
    private String userName;

    @Column(name = "user_pwd")
    private String userPwd;

    @Column(name = "full_name")
    private String fullName;

    @Column(name = "gender")
    private String gender;

    @Column(name = "age")
    private String age;

    @Column(name = "email")
    private String email;

    @Column(name = "address")
    private String address;

    @Column(name = "mobile")
    private String mobile;

    @Column(name = "location")
    private String location;
    
    @Column(name = "img")
    private byte[] img;
    //get set  cons
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值