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的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略