mybatis

您所在的位置:网站首页 mybatisplus中的ipage mybatis

mybatis

2023-02-25 00:18| 来源: 网络整理| 查看: 265

1. 官方网址2. 基本应用2.1 Mybatis + MP2.1.1 导入依赖2.1.2 先配置纯Mybatis应用2.1.3 然后配置无侵入使用MP(Mybatis + MP应用)2.2 Spring + Mybatis + MP2.3 SpringBoot + MP3. 通用CRUD3.1 新增3.2 修改3.3 删除3.4 查询4. 配置4.1 基本配置4.1.1 配置文件configuration4.1.2 mapper路径mapperLocations4.1.3 类别名typeAliasesPackage4.2 进阶配置4.2.1 驼峰转换mapUnderscoreToCamelCase4.2.2 cacheEnabled4.3 DB配置4.3.1 idType4.3.2 tablePrefix5. 条件构造器6. 插件

1. 官方网址

https://baomidou.com/

2. 基本应用

2.1 Mybatis + MP

2.1.1 导入依赖 com.baomidou mybatis-plus 3.1.1 mysql mysql-connector-java 5.1.47 com.alibaba druid 1.0.11 org.projectlombok lombok 1.18.4 junit junit 4.12 org.slf4j slf4j-log4j12 1.6.4

2.1.2 先配置纯Mybatis应用

jdbc.properties:

jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/atm?characterEncoding=utf-8jdbc.username=rootjdbc.password=root

编写Mybatis主配置文件mybatis-config.xml

编写实体类User

@Data // getter setter @toString@NoArgsConstructor // 无参构造@AllArgsConstructor // 全参构造public class User {private Long id;private String name;private Integer age;private String email;}

编写UserMapper接⼝

public interface UserMapper { List findAll();}

编写UserMapper.xml⽂件

select * from user

测试

public class MPTest {@Testpublic void test1() throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = sqlSessionFactory.openSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); List all = mapper.findAll(); for (User user : all) { System.out.println(user); }}}

2.1.3 然后配置无侵入使用MP(Mybatis + MP应用)

第⼀步,将UserMapper继承BaseMapper,将拥有了BaseMapper中的所有⽅法:

import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.lagou.pojo.User;public interface UserMapper extends BaseMapper { List findAll();}

第⼆步,使⽤MP中的MybatisSqlSessionFactoryBuilder进程构建:

@Testpublic void test2() throws IOException { InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml"); // 这⾥使⽤的是MP中的MybatisSqlSessionFactoryBuilder SqlSessionFactory sqlSessionFactory = new MybatisSqlSessionFactoryBuilder().build(resourceAsStream); SqlSession sqlSession = sqlSessionFactory.openSession(); UserMapper mapper = sqlSession.getMapper(UserMapper.class); // 可以调⽤BaseMapper中定义的⽅法 List all = mapper.selectList(null); for (User user : all) { System.out.println(user); } // 也可以使用原生的Mybatis手写方法 List all2 = mapper.findAll(); for (User user : all2) { System.out.println(user); }}

2.2 Spring + Mybatis + MP

引入依赖 ```xml

5.1.6.RELEASE

com.baomidou mybatis-plus 3.1.1 mysql mysql-connector-java 5.1.47 com.alibaba druid 1.0.11 org.projectlombok lombok 1.18.4 junit junit 4.12 org.slf4j slf4j-log4j12 1.6.4 org.springframework spring-webmvc ${spring.version} org.springframework spring-jdbc ${spring.version} org.springframework spring-test ${spring.version}

2. 编写jdbc.properties```propertiesjdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://127.0.0.1:3306/mp?serverTimezone=GMT%2B8&useSSL=falsejdbc.username=rootjdbc.password=root

编写Spring主配置文件applicationContext.xml

编写User对象以及UserMapper接⼝: ```java @Data @NoArgsConstructor @AllArgsConstructor public class User { private Long id; private String name; private Integer age; private String email; }

public interface UserMapper extends BaseMapper { List findAll(); }

5. 编写测试⽤例:```java@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = "classpath:applicationContext.xml")public class TestSpringMP { @Autowired private UserMapper userMapper; @Test public void test2() throws IOException { List users = this.userMapper.selectList(null); for (User user : users) { System.out.println(user); } }}

2.3 SpringBoot + MP

导入依赖

org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-starter-logging org.springframework.boot spring-boot-starter-test test org.projectlombok lombok true com.baomidou mybatis-plus-boot-starter 3.1.1 mysql mysql-connector-java 5.1.47 org.slf4j slf4j-log4j12 org.springframework.boot spring-boot-maven-plugin

编写application.properties

spring.datasource.driver-class-name=com.mysql.jdbc.Driverspring.datasource.url=jdbc:mysql://127.0.0.1:3306/mp?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true&useSSL=falsespring.datasource.username=rootspring.datasource.password=root

编写pojo

@Data@NoArgsConstructor@AllArgsConstructorpublic class User {private Long id;private String name;private Integer age;private String email;}

编写mapper

public interface UserMapper extends BaseMapper {}

编写启动类

package com.atm.mp;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.WebApplicationType;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.boot.builder.SpringApplicationBuilder;@MapperScan("com.atm.mp.mapper") //设置mapper接⼝的扫描包@SpringBootApplicationpublic class MyApplication { public static void main(String[] args) { SpringApplication.run(MyApplication.class, args); }}

编写测试⽤例

@RunWith(SpringRunner.class)@SpringBootTestpublic class UserMapperTest { @Autowired private UserMapper userMapper; @Test public void testSelect() { List userList = userMapper.selectList(null); for (User user : userList) { System.out.println(user); } }}

3. 通用CRUD

3.1 新增

3.2 修改

3.3 删除

3.4 查询

普通查询

分页查询 方法定义: ```java /** 根据 entity 条件,查询全部记录(并翻⻚) *@param page 分⻚查询条件(可以为 RowBounds.DEFAULT)

@param queryWrapper 实体对象封装操作类(可以为 null) */ IPage selectPage(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper);

2. 配置分⻚插件:```javapackage com.atm.mp;import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;import org.mybatis.spring.annotation.MapperScan;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;@Configuration@MapperScan("com.atm.mapper") //设置mapper接⼝的扫描包public class MybatisPlusConfig { /** * 分⻚插件 */ @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); }} 测试⽤例:@RunWith(SpringRunner.class)@SpringBootTestpublic class UserMapperTest {@Autowiredprivate UserMapper userMapper;@Testpublic void testSelectPage() { QueryWrapper wrapper = new QueryWrapper(); wrapper.gt("age", 20); //年龄⼤于20岁 Page page = new Page(1,1); //根据条件查询数据 IPage iPage = this.userMapper.selectPage(page, wrapper); System.out.println("数据总条数:" + iPage.getTotal()); System.out.println("总⻚数:" + iPage.getPages()); List users = iPage.getRecords(); for (User user : users) { System.out.println("user = " + user); }}} 4. 配置4.1 基本配置4.1.1 配置文件configurationMyBatis 配置⽂件位置,如果有单独的 MyBatis 配置,请将其路径配置到 configLocation 中。springboot:mybatis-plus.config-location = classpath:mybatis-config.xml spring mvc: 4.1.2 mapper路径mapperLocationsMyBatis Mapper 所对应的 XML ⽂件位置,如果您在 Mapper 中有⾃定义⽅法(XML 中有⾃定义实现),需要进⾏该配置,告诉 Mapper 所对应的 XML ⽂件位置。springboot:mybatis-plus.mapper-locations = classpath*:mybatis/*.xml spring mvc: 4.1.3 类别名typeAliasesPackageMyBaits 别名包扫描路径,通过该属性可以给包中的类注册别名,注册后在 Mapper 对应的 XML ⽂件中可以直接使⽤类名,⽽不⽤使⽤全限定的类名(即 XML 中调⽤的时候不⽤包含包名)。springboot:mybatis-plus.type-aliases-package = com.atm.mp.pojo spring mvc: 4.2 进阶配置4.2.1 驼峰转换mapUnderscoreToCamelCase 类型:boolean默认值:true

是否开启⾃动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN(下划线命名) 到经典 Java 属性名 aColumn(驼峰命名) 的类似映射。

#关闭⾃动驼峰映射,该参数不能和mybatis-plus.config-location同时存在mybatis-plus.configuration.map-underscore-to-camel-case=false

4.2.2 cacheEnabled 类型:boolean默认值:true

全局地开启或关闭配置⽂件中的所有映射器已经配置的任何缓存,默认为 true。

mybatis-plus.configuration.cache-enabled=false

4.3 DB配置

4.3.1 idType 类型:com.baomidou.mybatisplus.annotation.IdType默认值:ID_WORKER

全局默认主键类型,设置后,即可省略实体对象中的@TableId(type = IdType.AUTO)配置。springboot:

mybatis-plus.global-config.db-config.id-type=auto

springmvc:

4.3.2 tablePrefix 类型:string默认值: null

表名前缀,全局配置后可省略@TableName()配置。springboot:

mybatis-plus.global-config.db-config.table-prefix=tb_

spring mvc:

5. 条件构造器 等式 eq:等于ne:不等于gt:大于ge:大于等于lt:小于le:小于等于between 值1 and 值2not between 值1 and 值2in:字段 in(value1,value2)notIn:字段 not in(value1,value2) 模式查询 like:LIKE ‘%值%’notLike:NOT LIKE ‘%值%’likeLeft:LIKE ‘%值’likeRight:LIKE ‘值%’ 排序 orderByorderByAscorderByDesc 逻辑查询 or 主动调⽤ or 表示紧接着下⼀个⽅法不是⽤ and 连接!(不调⽤ or 则默认为使⽤ and 连接) and AND 嵌套 6. 插件


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3