mybatisplus的介绍和基本利用
mybatisplus
MyBatis-Plus(简称 MP)是一个 MyBatis 的加强工具,在 MyBatis 的基础上只做加强不做变化,为简化开发、挑高 成果而生。 官网:https://mybatis.plus/ 或 https://mp.baomidou.com/
特性
无攻克:只做加强不做变化,引入它不会对现有工程产生影响,如丝般顺滑
消磨小:启动即会自动注入基本 CURD,性能基本无消磨,直接面向对象操作
雄伟的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅始末小数配置即可实现单外大片面 CRUD 操作,
更有雄伟的条件结构器,已足各类利用必要
声援 Lambda 形势调用:始末 Lambda 外达式,方便的编写各类查询条件,无需再不安字段写错
声援众栽数据库:声援 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、
SQLServer2005、SQLServer 等众栽数据库
声援主键自动生成:声援众达 4 栽主键策略(内含分布式唯一 ID 生成器 - Sequence),可解放配置,完美解
决主键题目
声援 XML 炎加载:Mapper 对答的 XML 声援炎加载,对于浅易的 CRUD 操作,甚至不妨无 XML 启动
声援 ActiveRecord 模式:声援 ActiveRecord 形势调用,实体类只需继承 Model 类即可进走雄伟的 CRUD 操
作
声援自定义全局通用操作:声援全局通用手段注入( Write once, use anywhere )
声援关键词自动转义:声援数据库关键词(order、key......)自动转义,还可自定义关键词
内置代码生成器:采用代码或者 Maven 插件可敏捷生成 Mapper 、 Model 、 Service 、 Controller 层代码,
声援模板引擎,更有超众自定义配置等您来利用
内置分页插件:基于 MyBatis 物理分页,开发者无需关心小心操作,配置益插件之后,写分页等同于通俗 List
查询
内置性能分析插件:可输出 Sql 语句以及其实走时间,提议开发测试时启用该功能,能敏捷揪出慢查询
内置全局阻碍插件:挑供全外 delete 、 update 操作智能分析阻断,也可自定义阻碍规则,预防误操作
内置 Sql 注入剥离器:声援 Sql 注入剥离,有效预防 Sql 注入抨击
mybatisplus的单独利用
1 引入凭借
数据库驱动顺从你的mysql数据库版本进走切换
<dependencies> <!-- mysql数据库驱动--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.24</version> </dependency> <!-- mybatis-plus的凭借--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>3.1.1</version> </dependency> <!-- druid数据库连接池--> <!-- <dependency>--> <!-- <groupId>com.alibaba</groupId>--> <!-- <artifactId>druid</artifactId>--> <!-- <version>1.1.17</version>--> <!-- <!– 挑供get,set等手段–>--> <!-- </dependency>--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> <version>1.18.20</version> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> </dependencies>
2 配置文件 mybatis.xml
建立关闭驼峰规则 开启的话 比如 字段名 department_name 会与类的属性departmentName对答
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "-3-config.dtd"> <configuration> <!-- 载入外部资源文件属性文件--> <properties resource="jdbc.properties"/> <!--建立输入日志--> <settings> <setting name="logImpl" value="STDOUT_LOGGING"/> <!-- 建立关闭驼峰规则 开启的话 比如 字段名 department_name 会与类的属性departmentName对答--> <setting name="mapUnderscoreToCamelCase" value="false"/> </settings> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <!-- 建立驱动 URL username password--> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <mappers> <mapper resource="mapper/DepartmentDao.xml"/> </mappers> </configuration>
3 实体类
@TableName("departments")指定外明 若果你利用BaseMapper里的手段 必定要声明 伪如你是利用自身的SQL语句 不妨不声明
TableId 声明外的主键
TableFiled(value="字段名") 属性与字段映射
TableFiled(exist=false) 该属性在外里不存在
TableFiled(select=false) 不从外里选择该字段
//伪如不指定外名会默认找寻类名始字母小写的外 找不到则抛出失常 除非你在mapper.xml利用了自定义的SQL语句 @Data @TableName("departments") public class Department { @TableId(value = "department_id") private Integer department_id; // @TableField(select = false) private Integer manager_id; @TableField(value = "location_id") private Integer location_id; // private String department_name; }
4 dao接口
端庄继承BaseMapper<实体类>
// 继承BaseMapper接口 Department为对答的实体类 继承的接口里 mybatis-plus有许众实现手段 public interface DepartmentDao extends BaseMapper<Department> { List<Department> getAll(); }
5 进走测试
@Test public void TestMybatisplus() throws IOException { String resource = "mybatis.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); // 与mybatis的迥异乡方,用MybatisSqlSessionFactoryBuilder 替代 SqlSessionFactoryBuilder SqlSessionFactory build = new MybatisSqlSessionFactoryBuilder().build(inputStream); SqlSession sqlSession = build.openSession(); DepartmentDao departmentDao = sqlSession.getMapper(DepartmentDao.class); // 利用BaseMapper里的手段 List<Department> departments = departmentDao.selectList(null); // 利用自身的getAll手段 List<Department> all = departmentDao.getAll(); departments.forEach(System.out::println); }
上一篇:院校保举第四期:华中科技大学“院”景——构筑与城市规划学院城乡规划专长
下一篇:弘扬孝道文化 做雅致使者