mybatis-plus

2021/4/7 18:39:54

本文主要是介绍mybatis-plus,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

Mybatis-plus的使用

https://mp.baomidou.com/guide/quick-start.html

导入依赖

<!--mybatis-plus依赖包,包括了mybatis和mybatis-spring集成包-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.4.2</version>
</dependency>

修改配置文件applicationContext.xml

<!--spring管理mybatis-plus,创建会话工厂,跟mybatis-plus相关的配置都被MybatisSqlSessionFactoryBean集中管理-->
<bean id="sessionFactoryBean" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
!--mybatis-plus配置信息由MybatisConfiguration装配-->
<bean class="com.baomidou.mybatisplus.core.MybatisConfiguration">

只对于单表操作
Mapper接口可以继承BaseMapper接口,里面就不用写增删改查方法里面是实体类对象

public interface UserMapper extends BaseMapper<User> {}

Service接口继承IService接口,里面也不用写任何代码

public interface UserService extends IService<User> {}

Service的实现类UserServiceImpl继承ServiceImpl<UserMapper,User>,并且实现UserService接口就可以,也不用写增删改查代码

@Service
@Transactional
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService {
    @Autowired
    private UserMapper userMapper;
}

测试:
加载配置文件

ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
        UserService userService = context.getBean(UserService.class);

查询编号为150的用户:

User user = userService.getById(150);
System.out.println(user);

删除编号为111的用户:

 userService.removeById(111);

分页查询(没条件的):

PageHelper.startPage(1,10);
List<User> list = userService.list();

list.forEach(user -> System.out.println(user));
分页查询(有条件的):

 QueryWrapper<User>  queryWrapper=new QueryWrapper<>();
queryWrapper.eq("sex",1);
 queryWrapper.eq("age",20);
PageHelper.startPage(1,10);
        List<User> list = userService.list(queryWrapper);
        list.forEach(user -> System.out.println(user));

上面这种方法中的sex,age是表的字段名,硬编码,写死了字段名,耦合性强
下面这种方法是操作类属性,更面向对象编程,耦合性低,推荐使用

LambdaQueryWrapper<User> queryWrapper=new LambdaQueryWrapper<>();
 queryWrapper.eq(User::getAge,20);
 queryWrapper.eq(User::getSex,1)
             .like(User::getUsername,"111");
        PageHelper.startPage(1,10);
        List<User> list = userService.list(queryWrapper);
        list.forEach(user -> System.out.println(user));

//QueryWrapper转LambdaQueryWrapper
// LambdaQueryWrapper<User> lambda = queryWrapper.lambda();

代码生成器
AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。
导入依赖

!--代码生成器-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-generator</artifactId>
    <version>3.4.1</version>
</dependency>
<!--代码生成的模板-->
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.31</version>
</dependency>

https://mp.baomidou.com/guide/generator.html#%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B
从这把这个类CodeGenerator 里边的代码复制过来
在//全局配置这里

gc.setAuthor("x");//这个是生成作者名字
gc.setDateType(DateType.ONLY_DATE);
gc.setEnableCache(true);//开启二级缓存
gc.setFileOverride(true);//替换原有文件(修改之后再次执行会替换之前生成过的)

// 数据源配置
记得改driver和数据库密码
// 包配置

pc.setParent("com.entor");

// 策略配置
没有父类,注释代码

//        strategy.setSuperEntityClass("你自己的父类实体,没有就不用设置!");
//        strategy.setSuperControllerClass("你自己的父类控制器,没有就不用设置!");
//        strategy.setSuperEntityColumns("id");
/        strategy.setTablePrefix(pc.getModuleName() + "_");

这句是以下划线分隔开表名,比如输入的是sys_user,会从下划线后面截断,以user为类名创建实体类,但是我们直接输入的是表名user,没有下划线,所以也注释

最后把配置文件去掉,写配置类
就按照配置文件顺序写就可以,只要是改两个类,和配置文件对应上

MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();

MybatisConfiguration configuration=new MybatisConfiguration();

说明:
Mbp_0402是没有用代码生成器,里面的包都是我们自己写的
Mybatisplus_0402里面的entor底下的controller、entity、mapper、service、和resources底下的mapper是用了代码生成器生成的,不是自己写的



这篇关于mybatis-plus的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程