一.配置
在MP中有大量的配置,其中有一部分是Mybatis原生的配置,另一部分是MP的配置,详情:https://mybatis.plus/config
1.基本配置
【1】configLocation--自己单独的MyBatis配置的路径
#MyBatis配置文件位置,如果您有单独的MyBatis配置,请将其路径配置到configLocation中
mybatis-plus.config-location=classpath:mybatis-config.xml
SpringMVC的xml中写法:
<bean id="sqlSessionFactory"
class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean"><property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>
【2】mapperLocations--MyBatis Mapper所对应的XML文件位置
如果你在Mapper中有自定义方法(XML中有自定义实现),需要进行配置,告诉Mapper所对应的XML文件位置。
mybatis-plus.mapper-locations=classpath*:mybatis/*.xml
SpringMVC的xml中写法:
<bean id="sqlSessionFactory"
class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean"><property name="mapperLocations" value="classpath*:mybatis/*.xml"/>
</bean>
Maven多模块项目的扫描路径需以classpath*:开头(即加载多个jar包下的XML文件)
【3】typeAliasesPackage--给包中的类注册别名,使得Mapper对应的XML文件中可以直接使用类名,而不用使用全限定的类名
mybatis-plus.type-aliases-package=cn.itcast.mp.pojo
SpringMVC的xml中写法:
<bean id="sqlSessionFactory"
class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean"><property name="typeAliasesPackage"
value="com.baomidou.mybatisplus.samples.quickstart.entity"/>
</bean>
2.进阶配置(MyBatis原生的配置)
本部分的配置大都为MyBatis原生支持的配置,这意味这您可以通过MyBatis XML配置文件的形式进行配置。
【1】mapUnderscoreToCamelCase--开启自动驼峰命名规则映射
#关闭自动驼峰映射,该参数不能和mybatis-plus.config-location同时存在
mybatis-plus.configuration.map-underscore-to-camel-case=false
【2】cacheEnable--全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存
mybatis-plus.configuration.camel-enabled-=false
3.DB策略配置
【1】idType--全局默认主键属性,设置后,即可省略实体对象中的@TableId(type=IdType.AUTO)配置。
mybatis-plus.global-config.db-config.id-type=auto
【2】tablePrefix--表名前缀,全局配置后可以省略@TableName属性
mybatis-plus.global-config.db-config.table-prefix=tb_
二.条件构造器
接下去,我们重点学习AbstractWrapper以及其子类
【1】allEq
QueryWrapper<User> wrapper=new QueryWrapper<>();//设置条件Map<String,Object> params=new HashMap<>();params.put("name","曹操");params.put("age","20");params.put("password",null);//SELECT * FROM tb_user WHRER password IS NULL AND name = ? AND age = ?wrapper.allEq(params);//SELECT * FROM tb_user WHRER AND name = ? AND age = ?
// wrapper.allEq(params,false);List<User> users=this.userMapper.selectList(wrapper);for (User user:users){System.out.println(user);}
【2】基本比较操作
eq(=),ne(不等于),gt(大于),ge(大于等于),It(小于),Ie(小于等于)
between(BETWEEN 值1 AND 值2),notBetween(NOT BETWEEN 值1 AND 值2)
in--字段IN(value.get(0),value.get(1),...)
notIn--字段NOT IN(v0,v1,...)
【3】模糊查询
like,noLike,likeLeft,likeRight
//SELECT id,user_name,password,name,age,email FROM tb_user WHERE name LIKE "%曹%"
wrapper.like("name","曹");
//SELECT id,user_name,password,name,age,email FROM tb_user WHERE name not LIKE "%曹%"
wrapper.noLike("name","曹");
//SELECT id,user_name,password,name,age,email FROM tb_user WHERE name LIKE "%曹"
wrapper.likeLeft("name","曹");
//SELECT id,user_name,password,name,age,email FROM tb_user WHERE name LIKE "曹%"
wrapper.likeRight("name","曹");
【5】逻辑是or还是and(默认是and)
.or()
.and()
//SELECT id,name,age FROM tb_user WHERE name=? and age=?
wrapper.eq("name","李四").or().eq("age",24).select("id","name","age");
【6】select--通过select方法进行指定要查询哪些字段
//SELECT id,name,age FROM tb_user WHERE name=? and age=?
wrapper.eq("name","李四").eq("age",24).select("id","name","age");