以对象的方式操作数据库
需求分析
1.对象与数据库表如何映射?
利用注解实现对象与表绑定,属性与字段绑定
2.如何解决众多接口雷同的CURD操作
定义一个公共的Mapper接口,定义公共的CURD操作,利用泛型区分对象
3.如何将对象转换为sql
思想:按照特定的语法,将对象转发为sql语句
例子:将user对象插入数据库
userMapper.insert(user对象); //程序员的最后代码,具体的sql语句由框架生成
sql:insert into 表名(字段...)valuses(属性的值...);由MP动态拼接,最后交给mybatis执行
SpringBoot整合MybatisPlus
添加依赖
com.baomidou
mybatis-plus-boot-starter
3.2.0
添加注解
@Data
@Accessors(chain = true)
@TableName("user") //实现表与对象的依赖 如果名称一致(忽略大小写)可以省略表名 @TableName
public class User implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id; //主键,并且主键自增
//@TableField(value = "name") //可以省略
private String name;
private Integer age;
private String sex;
}
继承BaseMapper<>
修改yml配置文件
mybatis-plus:
#定义别名包
type-aliases-package: com.jt.pojo
#添加.xml文件依赖
mapper-locations: classpath:/mybatis/mappers/*.xml
#开启驼峰映射
configuration:
map-underscore-to-camel-case: true
测试类调用
@Test
public void test02(){
List userList=userMapper.selectList(null);
System.out.println(userList);
}
MP API介绍
开放sql日志
# 配置数据库日志
logging:
level:
#打印哪个包下的日志信息
com.jt.mapper: debug
insert操作
@Test
public void insert(){
User user = new User();
user.setName("王大锤")
.setAge(20)
.setSex("男");
userMapper.insert(user);
}
select操作
基于id值查询
@Test
public void select01(){
//基于id值查询user信息
User user=userMapper.selectById(21);
System.out.println(user);
}
count函数
@Test
public void select01(){
//查询总记录数
int count=userMapper.selectCount(null);
System.out.println(count);
}
多条件查询
/**
* 查询性别为(=)女 年龄大于100岁
* 条件构造发:动态拼接where条件的,多条件中默认的连接符为and
* 常见逻辑运算符:
* 1.eq = 2. gt > 3. lt < 4. ge >= 5. le <=
*/
@Test
public void select02(){
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("sex","女")
.gt("age",100);
List userList= userMapper.selectList(queryWrapper);
System.out.println(userList);
}
like模糊查询
/**
* 查询名字中包含“精”的男性
* 查询以精结尾的 %精
* 查询以精开头的 精%
*/
@Test
public void select03(){
QueryWrapper queryWrapper = new QueryWrapper<>();
/*queryWrapper.like("name","精")
.eq("sex","男");*/
//queryWrapper.likeRight("name","精");
queryWrapper.likeLeft("name","精");
List userList= userMapper.selectList(queryWrapper);
System.out.println(userList);
}
order排序
/**
* 查询性别为女,按照年龄倒序排序,如果年龄相同,按照id降序排序
*/
@Test
public void select04(){
QueryWrapper queryWrapper = new QueryWrapper<>();
queryWrapper.eq("sex","女")
.orderByDesc("age","id");
List userList= userMapper.selectList(queryWrapper);
System.out.println(userList);
}
批量查询
/**
* 查询id为1,3,4的数据
*/
@Test
public void select05(){
Integer[] ids= {1,3,4};
List idList = Arrays.asList(ids);
List userList=userMapper.selectBatchIds(idList);
System.out.println(userList);
}