新建一个maven项目,搭建springboot,batis环境

本文介绍如何使用Spring Boot创建项目并集成MyBatis框架,包括配置服务器、数据源及使用不同方式实现数据操作。

简单的记录一下

新建项目

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也可以是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 方法详解

搞定~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值