从零开始Mybatis学习之路

本文介绍了MyBatis的基本概念,包括其起源、特点和使用场景。通过实例演示如何配置环境、创建实体类、接口和Mapper,以及编写测试代码。重点展示了如何利用MyBatis简化数据库操作,提升开发效率。
摘要由CSDN通过智能技术生成

1、简介

        1.1、什么是Mybatis

        

        MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation   迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。        

                1、MyBatis 是一款优秀的持久层框架。

                2、它支持自定义 SQL、存储过程以及高级映射。

                3、MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作

                4、MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。

         1.2、如何获得Mybatis

                1、Maven仓库:

<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.4.6</version>
</dependency>

                2、Github:GitHub - mybatis/mybatis-3: MyBatis SQL mapper framework for Java 

                3、中文文档地址:mybatis – MyBatis 3 | 简介

        1.3、持久化与持久层

                1、数据持久化:持久化就是将程序的数据在持久状态瞬时状态转化的过程。

                2、持久层:完成持久化工作的代码块

                3、持久层:层界限十分明显

        1.4、为什么需要Mybatis

                1、便捷

                2、传统JDBC代码过于复杂繁琐

                3、自动化操作数据库

2、第一个Mybatis程序

        思路:搭建环境--->导入Mybatis--->编写代码--->测试

        2.1、搭建环境

                1、搭建数据库

CREATE DATABASE `mybatis`;

USE `mybatis`;

CREATE TABLE `user`(
	`id` INT(20) NOT NULL PRIMARY KEY,
	`name` VARCHAR(30) DEFAULT NULL,
	`pwd` VARCHAR(30) DEFAULT NULL

)ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO `user`(`id`,`name`,`pwd`) VALUES
(1,'admin','123456'),
(2,'张三','123456'),
(3,'李四','123456')

                 2、新建项目

                        新建一个普通的Maven项目--->删除src文件夹 ,变成父工程--->添加依赖

                               

        2.2、创建一个模块

                1、编写mybatis的核心配置文件

                        在resources文件夹下创建 mybatis-config.xml

<?xml version="1.0" encoding="UTF8" ?>
<!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"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;userUnicode=true&amp;characterEncoding=utf-8"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <!--每一个mapper.xml,都需要在mybatis核心配置文件中注册-->
    <mappers>
        <mapper resource="com/dao/UserMapper.xml"></mapper>
    </mappers>

</configuration>

                2、编写mybatis工具类

                        在java文件夹下创建Mybatis工具类(MybatisUtil)


//sqlSessionFactory
public class MybatisUtil {

    private static SqlSessionFactory sqlSessionFactory;

    static {
        try {
            //获取sqlSessionFactory对象
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    //SqlSession完全包含了面对数据库执行SQL命令所需的所有方法
    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();
    }



}

        2.3、编写代码 

                1、编写实体类

//实体类
public class User implements Serializable {

    private Integer id;
    private String name;
    private String pwd;

    public User() {
    }

    public User(Integer id, String name, String pwd) {
        this.id = id;
        this.name = name;
        this.pwd = pwd;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public String getPwd() {
        return pwd;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", pwd='" + pwd + '\'' +
                '}';
    }
}

                2、编写接口类

public interface UserDao {
    //查询所有用户
    List<User> getUserList();

    //根据Id查询用户
    User getUserById(int id);

    //新增用户
    int addUser(User user);

    //修改用户
    int updateUser(User user);

    //删除用户
    int deleteUser(int id);
}

                3、编写接口实现类

<?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">
<!--namespace:会绑定一个对于的Dao/Mapper接口类-->
<mapper namespace="com.dao.UserDao">

   <select id="getUserList" resultType="com.pojo.User">
        select * from mybatis.user
    </select>

    <select id="getUserById" parameterType="int" resultType="com.pojo.User">
        select * from mybatis.user where id=#{id}
    </select>

    <insert id="addUser" parameterType="com.pojo.User">
        insert into mybatis.user(id,name,pwd) values (#{id},#{name},#{pwd})
    </insert>

    <update id="updateUser" parameterType="com.pojo.User">
        update mybatis.user set name=#{name},pwd=#{pwd} where id=#{id}
    </update>

    <delete id="deleteUser" parameterType="int">
        delete from mybatis.user where id=#{id}
    </delete>
    
</mapper>

        2.4、测试 

在父/子项目pom.xml文件中添加

 <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>

            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>

        </resources>
    </build>
public class UserDaoTest {

    @Test
    public void test(){
        //获得sqlSession对象
        SqlSession sqlSession = MybatisUtil.getSqlSession();
        //执行SQL
        UserDao mapper = sqlSession.getMapper(UserDao.class);
        List<User> userList = mapper.getUserList();
        
        for (User user : userList) {
            System.out.println(user);
        }
        sqlSession.close();
    }

}

MyBatis执行流程

 

MyBatis事务

        1、声明式事务:类似AOP的应用,代码是横切进去的,不影响原有代码。

 

        2、编程式事务:需要在代码中,进行事务的管理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值