MyBatis - 使用示例 (一)单独使用

MyBatis - 使用示例 (一)单独使用

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录

越来越多的企业已经将 MyBatis 使用到了正式的生产环境,本系列就先介绍几种简单使用 MyBatis 的方式。

一、单独使用 MyBatis 访问数据库

(一)引入依赖

各位参照的小伙伴们,注意下版本最好一致,避免出现不可预估的问题。

<dependencies>
    <!--mybatis依赖包-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.5.6</version>
    </dependency>
    <!--测试包-->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    <!--mysql驱动包-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.20</version>
    </dependency>
    <!--lombok-->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.12</version>
    </dependency>
    <!--JSON格式解析-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.73</version>
    </dependency>
</dependencies>

(二)添加mybatis-config.xml

注意:

plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:

properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,objectWrapperFactory?, plugins?, environments?,databaseIdProvider?, mappers?

<?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>
    <!-- 配置mybatis的缓存,延迟加载等等一系列属性 -->
    <settings>
        <!-- 全局映射器启用缓存 -->
        <setting name="cacheEnabled" value="false" />
        <!-- 对于未知的SQL查询,允许返回不同的结果集以达到通用的效果 -->
        <setting name="multipleResultSetsEnabled" value="true" />
        <!-- 是否开启自动驼峰命名规则映射,数据库的A_COLUMN映射为Java中的aColumn -->
        <setting name="mapUnderscoreToCamelCase" value="true" />
        <!-- MyBatis利用本地缓存机制(Local Cache)防止循环引用(circular references)和加速重复嵌套查询 -->
        <setting name="localCacheScope" value="STATEMENT" />
    </settings>
    <!-- 指定路径下的实体类支持别名(默认实体类的名称,首字母小写), @Alias注解可设置别名 -->
    <typeAliases>
        <package name="cn.tzh.mybatisdemo.entity"/>
    </typeAliases>
    <!-- 配置当前环境信息 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC">
                <property name="" value=""/>
            </transactionManager>
            <!-- 配置数据源 -->
            <dataSource type="UNPOOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/gsfy_user?useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=false"/>
                <property name="username" value="user"/>
                <property name="password" value="password"/>
            </dataSource>
        </environment>
    </environments>
	<!-- 指定Mapper接口的路径 -->
    <mappers>
        <package name="cn.tzh.myabtisdemo.mapper"/>
    </mappers>
</configuration>

(三)准备实体类

package cn.tzh.mybatisdemo.entity;

import lombok.Data;
import java.io.Serializable;

/**
 * @author tzh
 * @date 2020/12/28  14:32
 */
@Data
public class User implements Serializable {
    
    
    private Long id;
    private String userName;
    private Integer age;
    private String phone;
    private String desc;
}

(四)创建Mapper接口

package cn.tzh.mybatisdemo.mapper;

import cn.tzh.mybatisdemo.entity.User;
import org.apache.ibatis.annotations.Param;

/**
 * @author tzh
 * @date 2020/12/28  14:29
 */
public interface UserMapper {
    
    

    /**
     * 查询用户
     *
     * @param id id
     * @return {@link User}
     * @author tzh
     * @date 2020/12/30
     */
    User selectUser(@Param("id") Long id);
}

(五)创建XML映射文件

<?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="cn.tzh.mybatisdemo.mapper.UserMapper">
    <!--标识开起二级缓存-->
    <cache/>
    <!--查询语句-->
    <select id="selectUser" resultType="User">
        select *
        from user
        where id = #{id}
    </select>
</mapper>

(六)测试

package cn.tzh.mybatisdemo;

import cn.tzh.mybatisdemo.entity.User;
import cn.tzh.mybatisdemo.mapper.UserMapper;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;

/**
 * @author tzh
 * @date 2020/12/28  14:36
 */
public class MybatisTest {
    
    

    @Test
    public void test() throws IOException {
    
    
        String resource = "mybatis-config.xml";
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //new DefaultSqlSessionFactory(config);
        SqlSession sqlSession = sqlSessionFactory.openSession(true);
        UserMapper mapper = sqlSession.getMapper(UserMapper.class);
        User user = mapper.selectUser(155L);
        System.out.println(user.toString());
    }
}

--------------最后感谢大家的阅读,愿大家技术越来越流弊!--------------

在这里插入图片描述

--------------也希望大家给我点支持,谢谢各位大佬了!!!--------------

猜你喜欢

转载自blog.csdn.net/Zack_tzh/article/details/111996536
今日推荐