-
步骤
1.创建一个maven项目,引入依赖
<!--继承springboot父项目-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.7.RELEASE</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!--mybatis-plus-boot-starter -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>2.2.0</version>
</dependency>
<!--模板引擎,需要指定 mpg.setTemplateEngine(new FreemarkerTemplateEngine());-->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
</dependency>
<!-- 模板引擎 -->
<!--<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.1</version>
</dependency>-->
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.15</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
其中Mybatis-plus整合SpringBoot的核心依赖是mybatis-plus-boot-starter 和 freemaker模板引擎(或者velocity模板引擎)这两个依赖,
注意:如果没有继承springboot父项目,则一定要写上版本号,否则不知道哪个版本依赖会下载错误
2. 使用代码生成器生成代码
在src/main/java下创建一个父包 com.xxx ,在父包下面创建一个代码生成器的类MpGenerator.java ,然后粘上模板代码点击这里 , 稍微修改一下模板代码,然后执行一下main方法就可以了。
3.测试
4.自定义方法
Mybatis-plus是支持自定义方法的,自定义方法直接按Mybatis的定义方法来就行,如果自定义方法需要在实体类中加新的属性,则一定要在这个属性上加上这样一个注解: @TableField(exist = false) ,否则使用其通用CRUD方法会报错.加上这个注解会告诉Mybatis-plus这个属性在数据库总没有对应的字段,默认是true,所以新加的属性需要手动改为false。
实体类
@Data
@AllArgsConstructor
@NoArgsConstructor
@Accessors(chain = true)
@TableName("cmfz_article")
public class Article extends Model<Article> {
private static final long serialVersionUID = 1L;
private String id;
private String title;
@TableField("publish_date")
@JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss",timezone = "GMT+8")
private Date publishDate;
@TableField("guru_id")
private String guruId;
private String content;
//查询的时候忽略表字段
@TableField(exist = false)
private Guru guru;
@Override
protected Serializable pkVal() {
return this.id;
}
}
mapper.xml
<!-- 通用查询映射结果 -->
<resultMap id="BaseResultMap" type="com.baizhi.entity.Article">
<id column="id" property="id" />
<result column="title" property="title" />
<result column="publish_date" property="publishDate" />
<result column="guru_id" property="guruId" />
<result column="content" property="content" />
<association property="guru" javaType="com.baizhi.entity.Guru">
<id column="gid" property="id" />
<result column="dharma" property="dharma" />
</association>
</resultMap>
<!-- 通用查询结果列 -->
<sql id="Base_Column_List">
id, title, publish_date AS publishDate, guru_id AS guruId, content
</sql>
<!--表连接查询所有文章和文章作者并分页;-->
<select id="findAllArticle" resultMap="BaseResultMap">
select a.id, a.title, a.publish_date, a.guru_id, a.content, g.id gid,g.dharma from cmfz_article a
left join cmfz_guru g
on a.guru_id = g.id
limit #{start},#{rows}
</select>