简单的记录一下
新建项目
File->new->project
选择Maven

next->填写项目名和groupid

finish之后就生成了一个maven项目

引入依赖
之后在pom中引入需要的依赖,引入依赖小技巧:mvnrepository.com 这个网站可以搜到绝大多数依赖包,点进去就有对应的xml代码,直接拷进来就ok
新建启动类文件
之后在java下面新建package,下面新建一个java class作为入口文件,代码:
@MapperScan("com.nari.application.mapper")
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
注意两点:1.改类文件最好放在package的根目录下,因为springboot默认扫描controller时指挥扫描启动类文件的同级目录及其子目录,即启动类文件和controller必须在同一个目录或启动类文件和controller的父文件(或祖父或曾祖父……)在同一个目录中;2.@MapperScan的注解是为了让MyBatis能够扫描到改路径下定义的mapper接口,如果不用mybatis框架的话就不需要
配置服务器、数据源等
之后再resource下面新建application.yml文件,配置服务器
server:
port: 9000
spring:
datasource:
username: ***
password: ***
url: ***
driver-class-name: ******
mybatis:
mapper-locations: classpath:mapping/*Mapping.xml
可以配置IP、端口等,也可以配置多套,此处不详细叙述。
mapper-location的classpath后面是指明xml文件路径的,我的目录结构如下

接下来就可以愉快的在对应的目录下新建文件敲代码啦~
mapping.xml几种写法
返回值可以是List
1.可以不定义resultmap,直接返回Map,Mapper接口中只需要传一个sql即可,注意这里不是resultMap而是resultType:
public interface TransformMapper {
<select id="Sel1" resultType="map">
${sql1}
</select>
}
mapper中定义接口:
List<Map<String, Object>> Sel1(String sql1);
controller中直接调用:
@Controller
@RequestMapping("/test")
public class test {
@Autowired
TransformMapper tm;
@RequestMapping(value = "/t", method = RequestMethod.GET)
public @ResponseBody
List<Map<String, Object>> t() {
String sql = "select id,name from test where name='name1'";
return tm.Sel1(sql);
}
}
返回结果:

该方法的好处是不需要定义实体类,当实体类拥有的属性很多时适用。
2.另一种方法是定义resultMap,返回实体类
先定义实体类:
@Repository
public class testVo {
private int id;
private String name;
private String clazz;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getClazz() {
return clazz;
}
public void setClazz(String clazz) {
this.clazz = clazz;
}
@Override
public String toString() {
return "id=" + id +
", name='" + name + '\'' +
", class='" + clazz +
'}';
}
}
写xml时,要先定义resultmap,返回值
<resultMap id="resMap" type="com.nari.application.entity.testVo">
<result column="id" property="id"/>
<result column="name" property="name"/>
<result column="class" property="clazz"/>
</resultMap>
<select id="Sel2" resultMap="resMap">
select * from test where name = '${name}';
</select>
mapper中定义:
testVo Sel2(String name);
调用:
@RequestMapping(value = "/t", method = RequestMethod.GET)
public @ResponseBody
List<testVo> t() {
return tm.Sel2("阿花");
}
结果:

调用时可以直接传sql,也可以传参数
上面一小节分别描述了直接传sql和传参数的方法,不做详述。
特殊方法:通过扩展BaseMapper接口完成CRUD功能
MyBatisPlus提供了BaseMapper接口,自己定义的Mapper 继承该接口后,无需编写 mapper.xml 文件,即可获得CRUD功能。
该方法避免了写xml文件的麻烦,该接口定义了增删改查的各种方法,需要加以下依赖(版本好像必须是3打头的,2.*.*的版本会报错):
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.4</version>
</dependency>
扩展接口
@Mapper
public interface TransformMapper extends BaseMapper<testVo> {
}
调用时可以一步到位,在controller中注入自定义的mapper对象;或者controller调用service调用mapper,这种情况下service和serviceimpl也要分别继承IService<实体类>、ServiceImpl<mapper, 类>。
//直接调用
@Autowired
TransformMapper tm;
@RequestMapping(value = "/t", method = RequestMethod.GET)
public @ResponseBody
List<testVo> t() {
List<testVo> resList = tm.selectList(null);
return resList;
//多步骤调用
//controller
@Autowired
TestService tm;
@RequestMapping(value = "/t", method = RequestMethod.GET)
public @ResponseBody
List<testVo> t() {
List<testVo> resList = tm.list();
return resList;
//service
public interface TestService extends IService<testVo> {
}
//serviceImpl
@Service
public class TestServiceImpl
extends ServiceImpl<TransformMapper, testVo>
implements TestService{
}
BaseMapper接口中定义了很多方法,可以参考这篇博文Mybatis-Plus 之BaseMapper 方法详解
搞定~
本文介绍如何使用Spring Boot创建项目并集成MyBatis框架,包括配置服务器、数据源及使用不同方式实现数据操作。

被折叠的 条评论
为什么被折叠?



