参考: https://www.jianshu.com/p/ceb1df475021 文中的 三、mp的通用crud:
https://www.jianshu.com/p/c5537559ae3a
https://songzixian.com/mybatisplus/1354.html
https://baomidou.com/pages/10c804/#alleq (官网)
实战:
delete_User
~~~~ @Autowired TestServer testServer; ~~~~~ @PostMapping("/aaa") public String delete_User3 (@RequestBody User user, HttpServletRequest HttpServletRequest) { testServer.aaa(); testServer.bbb(); return "完成更新操作"; }
tbl_b2c_user
package com.dao.entity; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; @Data @TableName(value = "tbl_b2c_user")//-------------------指定表名-------------这个不错,还可以加上库名.表名 public class tbl_b2c_user { private int id; private String name; }
tbl_b2c_userDao
package com.dao.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.dao.entity.tbl_b2c_user; public interface tbl_b2c_userDao extends BaseMapper<tbl_b2c_user> { }
TestServer
package com.server.Delete_user; import com.baomidou.dynamic.datasource.annotation.DS; import com.dao.entity.tbl_b2c_user; import com.dao.mapper.tbl_b2c_userDao; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; @DS("staging_B2c") @Service public class TestServer { // 测试使用构造器写sql @Autowired com.dao.mapper.tbl_b2c_userDao tbl_b2c_userDao; // 更新操作 public void aaa(){ com.dao.entity.tbl_b2c_user tbl_b2c_user=new tbl_b2c_user(); tbl_b2c_user.setId(2); tbl_b2c_user.setName("更新test测试2"); tbl_b2c_userDao.updateById(tbl_b2c_user);//根据id进行更新,没有传值的属性就不会更新 } //in查询操作 public void bbb(){ List<Integer> idList = new ArrayList<>(); idList.add(1); idList.add(2); idList.add(3); List<tbl_b2c_user> employees = tbl_b2c_userDao.selectBatchIds(idList); System.out.println(employees); employees.forEach(System.out::println); }
//模糊查询
public void ccc(){
QueryWrapper<tbl_b2c_user> queryWrapper = new QueryWrapper<>();
//模糊查询
queryWrapper.like("name", "我是强爷");
List<tbl_b2c_user> users = tbl_b2c_userDao.selectList(queryWrapper);
}
后记: 发现园可以这么写
@Test
public void testOptimisticLocker(){
//查询用户的信息
User user = userMapper.selectById(2L);
//修改用户的信息
user.setName("丁七岁");
user.setEmail("qisui123456@qq.com");
//执行更新的操作
userMapper.updateById(user);
}
https://blog.csdn.net/qq_43612538/article/details/105824506
public void bbb(){
NewTable NewTable=new NewTable(); 这个是实体类
NewTable.setName("张三");
NewTable.setAge(1);
NewTable.setGender("小班");
test_Dao.insert(NewTable);
}
如果后面忘了mybatis操作数据库那么就按下面顺序看
mybatis 有xml 怎么用
https://www.cnblogs.com/kaibindirver/p/15025758.html
https://www.cnblogs.com/kaibindirver/p/15240918.html
mybatis 注解使用
https://www.cnblogs.com/kaibindirver/p/15047034.html
mp多数据源使用
https://www.cnblogs.com/kaibindirver/p/15121436.html
记录一些常用的
线上项目,凡哥写的
可以用映射的方法 获取要比对的字段 如下面的 OrderEntity::getUserId 意思是 拿OrderEntity 里面的userId字段
.eq(OrderEntity::getUserId, req.getUserId())
11
allEq 全部
- 例1:
allEq({id:1,name:"老王",age:null})--->id = 1 and name = '老王' and age is null - 例2:
allEq({id:1,name:"老王",age:null}, false)--->id = 1 and name = '老王' #加false 就是 查询的值为空的 就过滤掉这个查询条件 - 例3:
allEq(true,{id:1,name:"老王",age:null}) true--->id = 1 and name = '老王' and age is null false -->不需要查询条件--------这里可以结合13、判断返回变量是否为空简写 返回为true or false 这个方法来用,场景是是否需要条件搜索 https://www.cnblogs.com/kaibindirver/p/11761456.html
这里面要放进一个字典 有2种方法
一种创建 map
Map m1 = new HashMap();
m1.put("user_id", "1420");
一种字符转 map
import com.alibaba.fastjson.JSONObject;
String m="{\"user_id\":\"1420\"}";
JSONObject m1= JSONObject.parseObject(m);
eq 等于
eq("name", "老王")--->name = '老王'
ne 不等于 <>
ne("name", "老王")--->name <> '老王'
gt 大于 >
gt("age", 18)--->age > 18
ge 大于等于 >=
ge("age", 18)--->age >= 18
lt 小于 <
lt("age", 18)--->age < 18
le 小于等于 <==
le("age", 18)--->age <= 18
between
between("age", 18, 30)--->age between 18 and 30
notBetween
notBetween("age", 18, 30)--->age not between 18 and 30
like
like("name", "王")--->name like '%王%'
notLike
notLike("name", "王")--->name not like '%王%'
likeLeft
likeLeft("name", "王")--->name like '%王'
likeRight
likeRight("name", "王")--->name like '王%'
isNull
isNull("name")--->name is null
isNotNull
isNotNull("name")--->name is not null
in
in("age",{1,2,3})--->age in (1,2,3)
notIn
notIn("age", 1, 2, 3)--->age not in (1,2,3)
inSql
inSql("age", "1,2,3,4,5,6")--->age in (1,2,3,4,5,6)
--->id in (select id from table where id < 3)
notInSql
notInSql("age", "1,2,3,4,5,6")--->age not in (1,2,3,4,5,6)
notInSql("id", "select id from table where id < 3")--->id not in (select id from table where id < 3)
groupBy
groupBy("id", "name")--->group by id,name
orderByAsc
orderByAsc("id", "name")--->order by id ASC,name ASC
orderByDesc
orderByDesc("id", "name")--->order by id DESC,name DESC
orderBy
orderBy(true, true, "id", "name")--->order by id ASC,name ASC
having
having("sum(age) > 10")--->having sum(age) > 10
having("sum(age) > {0}", 11)--->having sum(age) > 11
or
eq("id",1).or().eq("name","老王")--->id = 1 or name = '老王'
OR嵌套
or(i -> i.eq("name", "李白").ne("status", "活着"))--->or (name = '李白' and status <> '活着')
and
and(i -> i.eq("name", "李白").ne("status", "活着"))--->and (name = '李白' and status <> '活着')
nested
nested(i -> i.eq("name", "李白").ne("status", "活着"))--->(name = '李白' and status <> '活着')
apply 拼接 sql 该方法可用于数据库函数
apply("id = 1")--->id = 1
apply("date_format(dateColumn,'%Y-%m-%d') = {0}", "2008-08-08")--->date_format(dateColumn,'%Y-%m-%d') = '2008-08-08'")
只能调用一次,多次调用以最后一次为准 有sql注入的风险,请谨慎使用
last("limit 1")
exists ---这个就是判断 是否执行前面sql语句的 ---select * from tbl_b2c_user where id=5 and exists(select user_id from tbl_b2c_user where id=1)
exists("select id from table where age = 1")--->exists (select id from table where age = 1)
notExists
和exists相反