通用Mapper简单使用
通用Mapper
1、通用Mapper的使用
1.0、实体类
@Table(name = "tb_user")
public class User { @Id
@GeneratedValue(generator = "JDBC")
private Long id;
// 用户名
private String userName;
// 密码
private String password;
// 姓名
private String name;
// 年龄
private Integer age;
// 性别,1男性,2女性
private Integer sex;
// 出生日期
private Date birthday;
// 创建时间
private Date created;
// 更新时间
private Date updated;
//set、get方法.... }
泛型(实体类)<T>的类型必须符合要求
1、表名默认使用类名,驼峰转下划线(只对大写字母进行处理),如UserInfo默认对应的表名为user_info。 2、表名可以使用@Table(name = "tableName")进行指定,对不符合第一条默认规则的可以通过这种方式指定表名. 3、字段默认和@Column一样,都会作为表字段,表字段默认为Java对象的Field名字驼峰转下划线形式. 4、可以使用@Column(name = "fieldName")指定不符合第3条规则的字段名 5、使用@Transient注解可以忽略字段,添加该注解的字段不会作为表字段使用. 6、建议一定是有一个@Id注解作为主键的字段,可以有多个@Id注解的字段作为联合主键. 获取自增主键: //不限于@Id注解的字段,但是一个实体类中只能存在一个(继承关系中也只能存在一个)
@GeneratedValue(generator = "JDBC")
private Integer id;
这会令 MyBatis 使用 JDBC 的 getGeneratedKeys 方法来取出由数据库内部生成的主键(比如:像 MySQL 和 SQL Server 这样的关系数据库管理系统的自动递增字段)。
1.1、导入依赖
<!-- 通用mapper -->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.0.2</version>
</dependency>
1.2、开启包扫描
注意导入的包,一定要和导入的的依赖有关的包
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan; @SpringBootApplication
@MapperScan("com.myx.demo.mapper")
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class);
}
}
1.3、UserMapper接口继承通用Mapper
package com.myx.demo.mapper;
import com.myx.demo.pojo.User;
import tk.mybatis.mapper.common.Mapper; public interface UserMapper extends Mapper<User>{ }
1.4、SpringBoot默认的文件名Application.yml配置
server:
port: 8080 logging:
level:
com.myx.demo:
debug
spring:
datasource: #spring数据源的配置
url: jdbc:mysql://localhost:3306/day11mybatis
username: root
password: 123
1.5、通用Mapper的测试类
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
public class NewUserMapperTest { @Autowired
private UserMapper userMapper; }
1.5.1 id 的专用查询方法
@Test
public void testSelectId() {
userMapper.selectByPrimaryKey(1L);//id专用查询方法
System.out.println( userMapper.selectByPrimaryKey(1L));
}
1.5.2 属性查询
@Test
public void testSelectName() {
User user = new User();
user.setName("张三");//哪个属性有值where条件就根据哪个属性生成,id除外
List<User> select = userMapper.select(user);
System.out.println(select);
}
1.5.3 属性值唯一查询
@Test
public void testSelectOne() {
User user = new User();
user.setUserName("zhangsan");//查询值有多个会报错 System.out.println(userMapper.selectOne(user)); }
1.5.4 统计个数
@Test
public void testSelectCount() {
System.out.println(userMapper.selectCount(null));//没有查询条件就全查
}
1.5.5 插入
@Test
public void testInsert() {
User user = new User();
user.setUserName("孙悟空");
user.setName("sunwukong");
user.setAge(500);
user.setId(50L);
user.setPassword("234");
int insert = userMapper.insert(user);
System.out.println(insert);
}
1.5.6 selective插入
/*
* insertSelective方法:有值才操作,没有值不理会,比上insert方法效率高
* */
@Test
public void testInsertSelective() {
User user = new User();
user.setUserName("猪八戒");
user.setName("sunwukong");
user.setAge(500);
user.setId(51L);
user.setPassword("234");
user.setCreated(new Date());
int insert = userMapper.insertSelective(user);
System.out.println(insert);
}
1.5.7 删除
@Test
public void testDelete() {
User user = new User();
user.setUserName("孙悟空");
int delete = userMapper.delete(user);
System.out.println(delete);
}
1.5.8 根据id删除,主键的特有方法
@Test public void testDeleteByPrimaryKey() { userMapper.deleteByPrimaryKey(51L); }
1.5.9 修改
/*
* 指定的属性改变为指定的值,其余的为null
* */
@Test
public void testUpdateByPrimaryKey() {
User user = new User();
user.setId(36L);
user.setUserName("李白");
user.setName("libai"); userMapper.updateByPrimaryKey(user);
}
1.5.10 selecttive修改
/*
* 只改变指定的属性,其余属性不变
* */
@Test
public void testUpdatePriimarySelective() {
User user = new User();
user.setId(33L);
user.setUserName("王昭君");
user.setName("wangzhaojun");
user.setUpdated(new Date());
userMapper.updateByPrimaryKeySelective(user);
}
2 通用Mapper分页
2.1 分页的依赖
<!--分页的依赖-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
2.2 分页方法的测试
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class) public class MapperPageQueryTest {
@Autowired
private UserMapper userMapper; @Test
public void testPageQuery() {
//开启分页
PageHelper.startPage(3,5);
//不包含总的页数,总的元素个数
List<User> select = userMapper.select(null);
System.out.println(select);
} @Test
public void testPageInfoQuery() {
//开启分页
PageHelper.startPage(3,5);
//用page类型或者pageInfo类型目的就是获取总页数以及总条数
Page<User> userPage = (Page<User>) userMapper.select(null);
//分页返回的结果
//PageInfo<User> pageInfo = new PageInfo<>(select);
System.out.println(userPage);
}
}
3 通用Mapper组合查询和排序
3.1 添加普通条件
/*
* example要表达的含义为???
* 组合的查询条件
* */
@Test
public void testSelectByExample(){
//条件的组合工具
Example example = new Example(User.class);
//条件,一个criteria中可以组合无数个条件,但是这些条件都是and关系
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("sex","1");
criteria.andBetween("age",20,30);
List<User> users = userMapper.selectByExample(example);
System.out.println("users = " + users); }
3.2 添加or条件的组合查询
@Test
public void testSelectByExampleOr(){
//条件的组合工具
Example example = new Example(User.class);
//条件,一个criteria中可以组合无数个条件,但是这些条件都是and关系
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("sex","1");
Example.Criteria criteria1 = example.createCriteria();
criteria1.andLike("name","%李%");
//直接使用example的or方法使得第二个条件和原来的条件组合or关系
example.or(criteria1);
System.out.println(userMapper.selectByExample(example)); }
3.3 排序
@Test
public void testSelectByExampleOrder(){
//条件的组合工具
Example example = new Example(User.class);
//条件,一个criteria中可以组合无数个条件,但是这些条件都是and关系
Example.Criteria criteria = example.createCriteria();
criteria.andEqualTo("sex","1");
Example.Criteria criteria1 = example.createCriteria();
criteria1.andLike("name","%李%");
//直接使用example的or方法使得第二个条件和原来的条件组合or关系
example.or(criteria1);
//排序
example.setOrderByClause("id DESC");
System.out.println(userMapper.selectByExample(example)); }
通用Mapper简单使用的更多相关文章
- (一 、上)搭建简单的SpringBoot + java + maven + mysql + Mybatis+通用Mapper 《附项目源码》
最近公司一直使用 springBoot 作为后端项目框架, 也负责搭建了几个新项目的后端框架.在使用了一段时间springBoot 后,感觉写代码 比spring 更加简洁了(是非常简洁),整合工具也 ...
- 通用 mapper的简单使用
通用 MAPPER的简单使用 官方 https://mapperhelper.github.io/docs/2.use/ 依赖 <dependency> <groupId>t ...
- (二、下) springBoot 、maven 、mysql、 mybatis、 通用Mapper、lombok 简单搭建例子 《附项目源码》
接着上篇文章中 继续前进. 一.在maven 的pom.xm中添加组件依赖, mybatis通用Mapper,及分页插件 1.mybatis通用Mapper <!-- mybatis通用Mapp ...
- 在Spring4中使用通用Mapper
在Spring4中使用通用Mapper http://my.oschina.net/flags/blog/355281#OSC_h2_2 目录[-] 在Spring4中使用通用Mapper 一.在Sp ...
- 如何使用通用Mapper
集成方法请看上面的文档,集成后,可以继续阅读本页文档. 1. 继承通用的Mapper<T>,必须指定泛型<T> 例如下面的例子: public interface UserIn ...
- Mybatis通用Mapper
极其方便的使用Mybatis单表的增删改查 项目地址:http://git.oschina.net/free/Mapper 优点? 不客气的说,使用这个通用Mapper甚至能改变你对Mybatis单表 ...
- mybatis通用mapper的使用
项目中持久层封装了两套,一个hibernate,一个是mybatis.hibernate中封装了一些通用的方法,但是mybatis中没有,基于这个需求开始使用mybatis的通用mapper. ...
- 通用mapper认识和用法
目录 0. 认识 1. 导包 2. mybatis的config文件:mybatis-mapper-config.xml 3. spring与mybatis整合配置文件:mybatis.xml 4. ...
- Spring4中使用通用Mapper
1. 在Spring4中使用通用Mapper Spring4增加了对泛型注入的支持,这个特性对通用Mapper来说,非常的有用,可以说有了这个特性,可以直接在Service中写Mapper<U ...
随机推荐
- Moya https配置方法
准备 iOS做https适配时对服务器是有一定要求的,服务端必须要是一个符合ATS(App Transport Security)要求的HTTPS.简单说要满足以下几个要求: 1.Transpor ...
- oracle 查询年月日连在一起
SELECT B.YEAR || replace(lpad(B.MONTH, 2), ' ', '0') || replace(lpad(B.WEEK, 2), ' ', '0') from TT_U ...
- 牛客网PAT乙级(Basic Level)真题-数字分类 (20)
题目描述 给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字: A1 = 能被5整除的数字中所有偶数的和: A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4 ...
- css设置文字多余部分显示省略号
如果只显示一行,则可以使用以下方法: overflow: hidden; text-overflow:ellipsis; white-space: nowrap; 如果需要显示多行,在需要设置的元素s ...
- 垃圾回收(GC Garbage collection)
JS有自动垃圾清理机制, 如果有不需要用的对象,只需要设置对象=null即可 Var a = new object() a = null
- ASP.NET+MVC+EntityFramework快速实现增删改查
本教程已经录制视频,欢迎大家观看我在CSDN学院录制的课程:http://edu.csdn.net/lecturer/944
- 虚拟机无法上网,没有eth0
虚拟机无法上网,找不到eth0解决方案如下: Ifconfig -a 第一步,输入如下命令,编辑对应文件(使用管理员权限执行,下同) # vim /etc/default/grub 在"GR ...
- MySQL命令行登陆,远程登陆MySQL 的方法
https://www.cnblogs.com/lvk618/p/3522321.html 1.MySQL自带工具的存放路径: D:\Program Files\MySQL\MySQL Server ...
- 2017第八届蓝桥杯C/C++语言A组
一:题目: 标题:迷宫 X星球的一处迷宫游乐场建在某个小山坡上.它是由10x10相互连通的小房间组成的. 房间的地板上写着一个很大的字母.我们假设玩家是面朝上坡的方向站立,则:L表示走到左边的房间,R ...
- Mac使用
安装you-get: 用到mac下安装软件的工具:brew 百度搜brew到官网首页照说明在终端执行一段指令 安装方法:命令行输入 /usr/bin/ruby -e "$(curl -fsS ...