SpringBoot使用Mybatis教程

文章目录

      • 新建SpringBoot项目
      • 引入mybatis依赖
      • 如何使用mybatis?
        • 1.配置mybatis
          • ①.数据库配置
          • ②.mybatis相关配置
        • 2.使用mybatis
          • ①.创建JavaBean
          • ②.创建mapper
            • 1).使用注解方式
            • 2).使用xml方式
          • ③.调用

新建SpringBoot项目

本文所使用的代码编辑器为IntelliJ IDEA,这里简单介绍一下如何使用IDEA新建一个SpringBoot项目。
File—>New—>Project—>Spring Initializr
SpringBoot使用Mybatis教程_第1张图片

选择JDK版本,点击Next
SpringBoot使用Mybatis教程_第2张图片
输入项目包名,选择语言,打包方式,java版本,版本号等,点击Next
SpringBoot使用Mybatis教程_第3张图片
后面会使用mybatis,所以这里选择MyBatis Framework依赖,其他依赖项可以根据自己的项目需要选择,当然,这里也可以什么也不选择,后面再pom.xml文件中来添加。至此,一个基础的SpringBoot项目就搭建好了。

引入mybatis依赖

如果在新建项目的时候选择了mybatis依赖可直接跳过此步骤。
SpringBoot使用Mybatis教程_第4张图片
打开pom文件加入以下依赖

        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.3</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>

如何使用mybatis?

1.配置mybatis

①.数据库配置

数据库相关配置,包括数据库地址、用户名、数据库密码等。
SpringBoot使用Mybatis教程_第5张图片
打开resources文件夹下的application.properties文件,初始时此文件为空,在此处配合数据库地址、用户名、密码、编码方式、时区等,如上所示。

②.mybatis相关配置

SpringBoot使用Mybatis教程_第6张图片

A处为配置数据库表对应JavaBean中的实体包路径和对应的mapper文件路径
SpringBoot使用Mybatis教程_第7张图片
此处必须配置MapperScan,否则不能使用,关于mapper的使用后面会说到。到这里相关的配置项差不多已经完成了,可以开始使用mybatis了。

2.使用mybatis

①.创建JavaBean

新建数据库表需要映射到java文件的类,注意:这里的所有类都必须建立在之前所指定的com.example.demo.dao.entity 包下。

package com.example.demo.dao.entity;

import java.util.Date;

public class Person {
    /**
     * 主键
     */
    private String personId;
    /**
     * 姓名
     */
    private String name;
    /**
     *年龄
     */
    private Integer age;
    /**
     *生日
     */
    private Date birthDay;
    /**
     *爱好
     */
    private String hobby;

    public String getPersonId() {
        return personId;
    }

    public void setPersonId(String personId) {
        this.personId = personId;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public Date getBirthDay() {
        return birthDay;
    }

    public void setBirthDay(Date birthDay) {
        this.birthDay = birthDay;
    }

    public String getHobby() {
        return hobby;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }
}

②.创建mapper

mapper对应数据库中增删改查的操作,mapper的使用有两种方式,一:不使用xml直接在mapper.java文件中使用注解完成;二:使用xml方式。

1).使用注解方式
package com.example.demo.dao.mapper;

import com.example.demo.dao.entity.Person;
import org.apache.ibatis.annotations.*;

import java.util.Date;

public interface PersonMapper {
    /**
     * 增
     *
     * @param person
     */
    @Insert("INSERT INTO person(PERSON_ID,NAME,AGE,BIRTH_DAY,HOBBY) VALUES(" +
            "#{personId}, #{name}, #{age},#{birthDay}, #{hobby})")
    void addPerson(Person person);

    /**
     * 删
     *
     * @param personId
     */
    @Delete("DELETE FROM person WHERE PERSON_ID=#{personId}")
    void deletePerson(String personId);

    /**
     * 改
     *
     * @param person
     */
    @Update("UPDATE person SET NAME = #{name},AGE = #{age},BIRTH_DAY = #{birthDay},HOBBY = #{hobby} WHERE PERSON_ID = #{personId}")
    void updatePerson(Person person);

    /**
     * 查
     *
     * @param personId
     * @return
     */
    @Select("SELECT * FROM person WHERE PERSON_ID = #{personId}")
    @Results(
            {
                    @Result(property = "personId", column = "PERSON_ID"),
                    @Result(property = "name", column = "NAME"),
                    @Result(property = "age", column = "AGE"),
                    @Result(property = "birthDay", column = "BIRTH_DAY", javaType = Date.class),
                    @Result(property = "hobby", column = "HOBBY")
            }
    )
    Person queryPerson(String personId);
}

使用注解方法可以直接调用此接口实现增删改查不用创建xml,就是代码看起来不太简洁。

2).使用xml方式

1、新建mapper.java文件

package com.example.demo.dao.mapper;

import com.example.demo.dao.entity.Person;

public interface PersonMapperByXml {
    /**
     * 增
     *
     * @param person
     */
    void addPerson(Person person);

    /**
     * 删
     *
     * @param personId
     */
    void deletePerson(String personId);

    /**
     * 改
     *
     * @param person
     */
    void updatePerson(Person person);

    /**
     * 查
     *
     * @param personId
     * @return
     */
    Person queryPerson(String personId);
}

2、创建mapper.xml文件
注意xml文件必须建立在上文配置中指定的文件夹下且必须和mapper.java文件同名。



<mapper namespace="com.example.demo.dao.mapper.PersonMapperByXml">
    <resultMap id="PersonMap" type="com.example.demo.dao.entity.Person">
        <result column="PERSON_ID" property="personId"/>
        <result column="NAME" property="name"/>
        <result column="AGE" property="age"/>
        <result column="BIRTH_DAY" property="birthDay" javaType="Date"/>
        <result column="HOBBY" property="hobby"/>
    resultMap>
    <insert id="addPerson" parameterType="com.example.demo.dao.entity.Person"
            statementType="CALLABLE">
        insert into person(PERSON_ID, NAME, AGE, BIRTH_DAY, HOBBY)
        values (#{personId}, #{name}, #{age}, #{birthDay}, #{hobby})
    insert>
    <delete id="deletePerson" parameterType="String" statementType="CALLABLE">
        delete
        from person
        where PERSON_ID = #{personId}
    delete>
    <update id="updatePerson" parameterType="com.example.demo.dao.entity.Person" statementType="CALLABLE">
        update person
        set NAME      = #{name},
            AGE       = #{age},
            BIRTH_DAY = #{birthDay},
            HOBBY     = #{hobby}
        where PERSON_ID = #{personId}
    update>

    <select id="queryPerson" parameterType="String" resultMap="PersonMap">
        select *
        from person
        where PERSON_ID = #{personId}
    select>
mapper>

注意:id对应mapper.java文件中的方法名,parameterType为方法输入参数类型。

③.调用
package com.example.demo.controller;

import com.example.demo.dao.entity.Person;
import com.example.demo.dao.mapper.PersonMapper;
import com.example.demo.dao.mapper.PersonMapperByXml;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import java.util.Date;

@RestController
public class DemoController {

    @Autowired
    private PersonMapperByXml personMapperByXml;

    @Autowired
    private PersonMapper personMapper;

    @RequestMapping(value = "/addPerson", method = RequestMethod.GET)
    public void addPerson() {
        Person person = new Person();
        person.setPersonId("11111111111111111");
        person.setName("张三");
        person.setAge(20);
        person.setBirthDay(new Date());
        person.setHobby("画画");

        personMapper.addPerson(person);
        //  personMapperByXml.addPerson(person);
    }

    @RequestMapping(value = "/deletePerson", method = RequestMethod.GET)
    public void deletePerson() {
        personMapper.deletePerson("11111111111111111");
        // personMapperByXml.deletePerson("11111111111111111");
    }

    @RequestMapping(value = "/queryPerson", method = RequestMethod.GET)
    public void queryPerson() {
        Person person = personMapper.queryPerson("11111111111111111");
        System.out.println(person.getName());
    }

    @RequestMapping(value = "/updatePerson", method = RequestMethod.GET)
    public void updatePerson() {
        Person person = personMapper.queryPerson("11111111111111111");
        System.out.println(person.getName());

        person.setName(person.getName() + "A");
        personMapperByXml.updatePerson(person);
    }
}

最后附上Demo下载链接

你可能感兴趣的:(服务端,mysql,mybatis,spring,boot)