【SpringBoot】數據持久化——mybatis使用

如果餓了就喫,困了就睡,渴了就喝,人生就太無趣了
源碼地址:https://github.com/keer123456789/springbootstudy/tree/master/mybatisdemo


1.項目配置

1.1 maven依賴配置

主要是mysqlmybatis的依賴,注意mysql的版本,根據自己的版本進行改動。

	<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.1</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.11</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>

        </dependency>
    </dependencies>

1.2 mysql配置

application.properties添加mysql的配置,根據需要修改配置內容,本次使用的數據庫文件mybatis.sql在項目中。

spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis?useSSL=false&serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

1.3 mybatis配置

resource文件夾下創建mybatis文件夾,添加mybatis-config.xml配置文件,此文件是mybatis的基礎配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <typeAliases>
        <typeAlias alias="Integer" type="java.lang.Integer" />
        <typeAlias alias="Long" type="java.lang.Long" />
        <typeAlias alias="HashMap" type="java.util.HashMap" />
        <typeAlias alias="LinkedHashMap" type="java.util.LinkedHashMap" />
        <typeAlias alias="ArrayList" type="java.util.ArrayList" />
        <typeAlias alias="LinkedList" type="java.util.LinkedList" />
    </typeAliases>
</configuration>

application.properties添加該配置文件位置

mybatis.config-location=classpath:mybatis/mybatis-config.xml

2.兩種使用方式

mybatisSpringBoot中提供了兩種方式,一種是XML方式,一種是註解的方式。
下面只講解mybatis的用法,完整代碼參見:github>>>

2.1 使用XML

2.1.1.在數據庫中創建user

如圖1:

在這裏插入圖片描述

2.1.2.創建User對象類

如圖2:創建相應的成員變量,並添加getter(),setter()toString()方法

在這裏插入圖片描述

2.1.3.添加Mapper映射

本次通過增,刪,改,查四個方法進行說明

public interface UserMapper {
    /**
     * 獲取全部用戶信息
     * @return
     */
    List<User> getAll();

    /**
     * 通過id查詢用戶信息
     * @param id
     * @return
     */
    User getUserInfoByID(String id);

    /**
     * 增加用戶信息
     * @param user
     * @return
     */
    int addUserInfo(User user);

    /**
     * 更改用戶姓名
     * @param name
     * @param id
     * @return
     */
    int updateUserNameByID(String name,String id);

    /**
     * 根據用戶ID刪除用戶信息
     * @param id
     * @return
     */
    int deleteUserInfoByID(String id);

}

2.1.4 添加相應的xml文件

創建相應的xml文件:UserMapper.xml,將每個方法的sql語句全在在這裏實現:

  • mapper中的namespace一定要和相應的mapper文件對應好
  • resultMap是將查詢出的數據和相應的對象類對應上
  • 其餘的中id屬性要和方法名稱對應上
  • sql語句中#{**}要和對應的方法的入參名稱相一致,如果入參是對象類,則需要和相應的成員變量對應上
<?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="com.keer.mybatisdemo.mapper.UserMapper">

    <resultMap id="BaseResultMap" type="com.keer.mybatisdemo.pojo.User">
        <id column="id" property="id" jdbcType="VARCHAR"/>
        <result column="name" property="name" jdbcType="VARCHAR"/>
        <result column="sex" property="sex" jdbcType="VARCHAR"/>

    </resultMap>

    <select id="getAll" resultMap="BaseResultMap">
        select * from user;
    </select>

    <select id="getUserInfoByID" parameterType='string' resultMap="BaseResultMap">
        select * from user where id=#{id}
    </select>

    <insert id="addUserInfo" parameterType="com.keer.mybatisdemo.pojo.User">
        insert into user (id,name,sex)values (#{id},#{name},#{sex})
    </insert>

    <update id="updateUserNameByID">
        update user set name=#{name} where id=#{id}
    </update>

    <delete id="deleteUserInfoByID">
        delete from user where id =#{id}
    </delete>

</mapper>

resource/mybatis文件夾下創建mapper文件夾,將UserMapper.xml放在此文件夾中
並在在application.properties添加該mapper文件位置

mybatis.mapper-locations=classpath:mybatis/mapper/*.xml

2.1.5 使用例子

1.select 查詢

 	@Autowired
    UserMapper userMapper;

    @Test
    @DisplayName("獲取全部用戶信息")
    public void testGetAllUser() {
        System.out.println(userMapper.getAll().toString());
    }

	@Test
    @DisplayName("根據用戶id獲取用戶信息")
    public void testGetUserInfoByID() {
        Assert.assertEquals("張",userMapper.getUserInfoByID("1").getName());
    }

2.insert 插入

	@Test
    @DisplayName("增加用戶信息")
    public void testAddUserInfo() {
        User user = new User("keer", "男", "2");
        Assert.assertEquals(1, userMapper.addUserInfo(user));
    }

3.update 更新

	@Test
    @DisplayName("根據用戶id更新用戶姓名")
    public void testUpdateUserNameByID() {
        Assert.assertEquals(1,userMapper.updateUserNameByID("可耳", "2"));
    }

4.delete 刪除

	@Test
    @DisplayName("根據用戶id刪除用戶信息")
    public void testDeleteUserInfoByID() {
        Assert.assertEquals(1,userMapper.deleteUserInfoByID("2"));
    }

2.2 使用註解

2.2.1 創建people

如圖3:
在這裏插入圖片描述

2.1.2.創建People對象類

如圖4:創建相應的成員變量,並添加getter(),setter()toString()方法

在這裏插入圖片描述

2.1.3 創建mapper對象

將xml中的信息通過註解的方式展現
通過使用select,insert,update,delete註解替換xml文件中的相應標籤

public interface PeopleMapper {
    /**
     * 查詢全部個人信息
     * @return
     */
    @Select("select * from people")
    @Results({
            @Result(property = "id",column = "id"),
            @Result(property = "name",column = "name"),
            @Result(property = "age",column = "age"),
            @Result(property = "address",column = "address")
    })
    List<People> getAllPeopleInfo();

    /**
     * 根據id查詢個人信息
     * @param id
     * @return
     */
    @Select("select * from people where id=#{id}")
    @Results({
            @Result(property = "id",column = "id"),
            @Result(property="name",column = "name"),
            @Result(property = "address",column = "address"),
            @Result(property = "age",column = "age")
    })
    People getPeopleInfoByID(int id);

    /**
     * 增加人員信息
     * @param people
     * @return
     */
    @Insert("insert into people(id,name,address,age)values(#{id},#{name},#{address},#{age})")
    int addPeopleInfo(People people);

    /**
     * 根據ID更改人員姓名
     * @param name
     * @param id
     * @return
     */
    @Update("update people set name=#{name} where id = #{id}")
    int updatePeopleNameByID(String name,int id);

    /**
     * 根據ID刪除人員信息
     * @param id
     * @return
     */
    @Delete("delete from people where id= #{id}")
    int deletePeopleInfoByID(int id);
}

此時可以在這個mapper上加上@Mapper讓該文件被掃描到,如果mapper文件很多,就可以在啓動類上添加註解MapperScan,讓其掃描整個mapper文件夾。

@SpringBootApplication
@MapperScan("com.keer.mybatisdemo.mapper")
public class MybatisdemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(MybatisdemoApplication.class, args);
    }
}

使用方法和xml的方法相同,直接調用mapper的方法即可。不在過多贅述了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章