Mybatis入门实战

2019/02/02 Mybatis

Mybatis入门实战

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

Maven相关依赖

   <!-- 引入 MySQL 数据库驱动依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
        </dependency>
        <!-- lombok 依赖-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.22</version>
            <scope>provided</scope>
        </dependency>
        <!-- 引入 MyBatis 依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.9</version>
        </dependency>
        <!-- 单元测试依赖-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>

Mysql数据库脚本

CREATE DATABASE `db_mybatis`;
CREATE TABLE `t_user`  (
  `id` int NOT NULL,
  `username` varchar(20)  NOT NULL DEFAULT '' COMMENT '用户名称',
  `birthday` datetime NULL DEFAULT NULL COMMENT '生日',
  `sex` char(1)  NULL DEFAULT '' COMMENT '性别',
  `address` varchar(255) NOT NULL DEFAULT '' COMMENT '地址',
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB ;

INSERT INTO `t_user` VALUES (1, '张三', '2002-01-22 14:41:28', '男', '广西河池市宜州市');
INSERT INTO `t_user` VALUES (2, '李四', '2001-01-22 14:41:28', '女', '广西河池市巴马县');

编写一个user 实体类。

@Data
@ToString
public class UserEntity {
    private Integer id;
    private String userName;
    private Date birthday;
    private String sex;
    private String address;
}

SqlMapConfig.xml 核心配置文件

<?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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"></transactionManager>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/db_mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 引入映射配置文件-->
    <mappers>
        <mapper resource="mapper/UserMapper.xml"></mapper>
    </mappers>
</configuration>

编写一个 userMapper.xml

我们要在这个映射配置文中去配置实体类以及 user 表它的一个映射关系。并且我们的 SQL 语句也是要写在这个 usermapper.xml 这个映射文件。这个映射配置文件创建在哪?那通常我们把配置文件都是创建在 resources 这个目录下。

<?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.demo.entity.UserEntity">
    <!--
        namespace:命名空间,与 id 属性共同构成唯一标识
        resultType:返回结果类型(自动映射封装):要封装的实体的全路径
    -->
    <select id="findAll" resultType="com.demo.entity.UserEntity">
        select * from t_user
    </select>
</mapper>

编写测试

public class MyBatisTest {
    
    @Test
    public void myBatisQuickStartTest() throws IOException {
        //1. 加载核心配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("SqlMapConfig.xml");
        // 2. 获取 SqlSessionFactory 工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);

        //3. 获取SQLSession 会话对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //4. 执行 SQL,参数:statement
        List<UserEntity> userEntityList = sqlSession.selectList("UserEntity.findAll");
        //5. 遍历结果
        for (UserEntity userEntity : userEntityList) {
            System.out.println(userEntity);
        }
        sqlSession.close();
    }
}

Search

    微信好友

    博士的沙漏

    Table of Contents