【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的方法即可。不在过多赘述了

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