1.在eclipse里面添加pom.xml的配置
<dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> <version>1.7</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version>2.1.6</version> </dependency>
注意:mybatis-plus会自动维护mybatis以及mybatis-spring的依赖,所以不需要引入后两者,避免发生版本冲突
2.修改配置文件
在spring配置文件中application-dao.xml中,将mybatis的配置替换为
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <!-- 自动扫描Mapping.xml文件 --> <property name="mapperLocations" value="classpath:mybatis/*/*.xml"/> <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/> <property name="typeAliasesPackage" value="com.baomidou.springmvc.model.*"/> <property name="plugins"> <array> <!-- 分页插件配置 --> <bean id="paginationInterceptor" class="com.baomidou.mybatisplus.plugins.PaginationInterceptor"> <property name="dialectType" value="mysql"/> </bean> </array> </property> <!-- 全局配置注入 --> <property name="globalConfig" ref="globalConfig" /> </bean> <bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration"> <!-- AUTO->`0`("数据库ID自增") INPUT->`1`(用户输入ID") ID_WORKER->`2`("全局唯一ID") UUID->`3`("全局唯一ID") --> <property name="idType" value="2" /> <!-- MYSQL->`mysql` ORACLE->`oracle` DB2->`db2` H2->`h2` HSQL->`hsql` SQLITE->`sqlite` POSTGRE->`postgresql` SQLSERVER2005->`sqlserver2005` SQLSERVER->`sqlserver` --> <!-- Oracle需要添加该项 --> <!-- <property name="dbType" value="oracle" /> --> <!-- 全局表为下划线命名设置 true --> <property name="dbColumnUnderline" value="true" /> </bean>开始使用
1.写实体
/* * 这里有两个注解需要注意,第一是@tableName("user"),它是指定与数据库表的关联,这里的注解意味着你的数据库里应该有一个名为user的 *表与之对应, * 并且数据表的列名应该就是User类的属性,对于User类中有而user表中没有的属性需要加第二个注解@TableField(exist = false), * 表示排除User类中的属性. */ @TableName("Items") public class Items implements Serializable{ private Integer id; private String name; private Float price; private String pic; private Date createtime; private String detail; @TableField(exist = false) private String test; }
2.写dao接口
/** * mybatisplus dao接口 * @author LY * */ public class itemsExtMapper extends BaseMapper<Items>{ @Select("selectItemsList") List<Items> selectItemsList(Pagination page,String state); } 3.新建Mapper文件 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="gz.kd.ItemsExtMapper"> <!-- 通用查询结果列--> <sql id="Base_Column_List"> id, name, age </sql> <select id="selectItemsList" resultType="Items"> SELECT * FROM sys_user WHERE state=#{state} </select> </mapper>
4.新建service层
/** * ItemsExtService继承了ServiceImpl类,mybatis-plus通过这种方式为我们注入了itemsExtMapper, * 样可以使用service层默认为我们提供的很多方法,也可以调用我们自己在dao层编写的操作数据库的方法. * Page类是mybatis-plus提供分页功能的一个model,继承了Pagination,这样我们也不需要自己再编写一个Page类, * 直接使用即可. * @author LY * */ public class ItemsExtService extends ServiceImpl<itemsExtMapper, Items>{ public Page<Items> selectItemsPage(Page<Items> page, String state) { page.setRecords(baseMapper.selectItemsList(page,state)); return page; } }
5.controller中的使用
Page page=new Page(1,10); page = itemsService.selectItemsPage(page, "NORMAL");
Mybatisplus的条件构造器
使用entityWrapper可以完成一些简单的条件查询
public void test(){ EntityWrapper ew=new EntityWrapper(); ew.setEntity(new User()); String name="wang"; Integer age=16; ew.where("name = {0}",name).andNew("age > {0}",age).orderBy("age"); List<User> list = userService.selectList(ew); Page page2 = userService.selectPage(page, ew); }自定义的mapper同样能后使用EntityWrapper
1.在Mappper中定义:
List<Items> selectMyPage(RowBounds rowBounds, @Param("ew") Wrapper<T> wrapper);2.在mapper文件中定义:
<select id="selectMyPage" resultType="Items"> SELECT * FROM items ${ew.sqlSegment} </select>
@Test public void testTSQL11() { /* * 实体带查询使用方法 输出看结果 */ ew.setEntity(new Items(1)); ew.where("pic={0}", "'kd.jpg'").and("id=1") .orNew("status={0}", "0").or("status=1") .notLike("nlike", "notvalue") .andNew("new=xx").like("hhh", "ddd") .andNew("pwd=11").isNotNull("n1,n2").isNull("n3") .groupBy("x1").groupBy("x2,x3") .having("x1=11").having("x3=433") .orderBy("dd").orderBy("d1,d2"); System.out.println(ew.getSqlSegment()); }