通用Mapper

本文介绍如何在MyBatis中使用通用Mapper和分页助手插件,简化单表增删改查操作并实现动态SQL拼接。通过配置插件,可以避免编写Mapper.xml,直接在Mapper接口中定义方法,同时利用分页助手实现高效的分页查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原理是:拦截器

1、假设:使用MyBatis只需要定义Mapper接口,无需编写Mapper.xml文件

  如果实现无需编写Mapper.xml文件,我们必须要实现动态拼接SQL

如何实现动态拼接SQL语句?

思路:编写Mybatis的插件,在执行过程中动态生成SQL语句

2、简介:

  Mybatis通用 Mapper极其方便的使用Mybatis单表的增删改查,支持单表操作,不支持通用的多表联合查询。

3、在Mybatis的配置文件中进行配置

  3.1 分页助手也是拦截器技术,所以注意顺序,分页助手配置在通用mapper的前面

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <plugins>
        <!-- 配置分页助手 -->
        <!-- com.github.pagehelper为PageHelper类所在包名 -->
        <plugin interceptor="com.github.pagehelper.PageHelper">
            <property name="dialect" value="mysql" />
            <!-- 设置为true时,使用RowBounds分页会进行count查询 -->
            <property name="rowBoundsWithCount" value="true" />
        </plugin>
        <!-- 配置通用Mapper -->
        <plugin interceptor="com.github.abel533.mapperhelper.MapperInterceptor">
            <!--主键自增回写方法,默认值MYSQL,详细说明请看文档 -->
            <property name="IDENTITY" value="HSQLDB" />
            <!--通用Mapper接口,多个通用接口用逗号隔开 -->
            <property name="mappers" value="com.github.abel533.mapper.Mapper" />
        </plugin>

    </plugins>

</configuration>

  3.2  mapper继承Mapper<?>

public interface NewUserMapper extends Mapper<User>{
    
}

  3.3 给实体对象 User进行注解设置

@Table(name="tb_user")
public class User {
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;

    // 用户名
    private String userName;

    // 密码
    private String password;

    // 姓名
    private String name;

    // 年龄
    private Integer age;

    // 性别,1男性,2女性
    private Integer sex;

    // 出生日期
    private Date birthday;

 

 3.3 service 使用

@Service
public class NewUserService {
    
    @Autowired
    private NewUserMapper newUsermapper;

    public EasyUIResult queryUserList(Integer page, Integer rows) {
        //设置分页参数
        PageHelper.startPage(page,rows);
        //設置查詢條件
        Example example=new Example(User.class);
        example.setOrderByClause("created DESC");
        List<User> users = this.newUsermapper.selectByExample(example);
        PageInfo<User> pageinfo=new PageInfo<User>(users);
        return new EasyUIResult(pageinfo.getTotal(),pageinfo.getList());
        
    }
    
}

 

转载于:https://www.cnblogs.com/axu521/p/10229318.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值