MyBatis快速入门

MyBatis快速入门

刚刚开始做项目的时候呀,老是用jdbcTemplate来实现dao层与数据库的交互,但是那样确实是与代码耦合了,那么想要解决耦合问题呢。
那当然是要选择 配置文件 啦,所有我们来学习学习mybatis的快速入门吧,当然啦,他可不是配置文件哈,啊哈哈哈
MyBatis作为dao层的框架还是超级好用的哦,那么我们来看看他的开发吧

只需要六步,就能玩转MyBatis啦

  1. 先来添加MyBatis的坐标吧,emmm就是导入依赖啦
  2. 第二就是要去创建一个数据表拉,这个我搞个user来演示哈
  3. 编写user实体类哦
  4. 到这里就是重点拉,编写映射文件哦,
  5. 编写核心文件,这个划重点呢
  6. 最后就是测试拉,我们最后搞个测试类,来看看就行了,

一、导入依赖

  • 依赖直接放到 pom.xml 里面就行哦,核心的需要这两个就行了
  • 最后那个测试的时候需要哒
   <dependency>
       <groupId>mysql</groupId>
       <artifactId>mysql-connector-java</artifactId>
       <version>8.0.25</version>
   </dependency>
   <dependency>
       <groupId>org.mybatis</groupId>
       <artifactId>mybatis</artifactId>
       <version>3.5.7</version>
   </dependency>
   <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>4.13.1</version>
       <scope>test</scope>
   </dependency>

二、在数据库里建数据表

  • 这个没啥好说的哈,我直接建个user搞三个字段 id,username,password就行了哈
  • 然后随便搞点数据进去,方便我们的测试
  • 这里给上建表语句哈
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(32) NOT NULL,
  `password` varchar(32) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `username` (`username`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

三、编写user实体类

  • 建立一个简单javaBean就行拉,不用太复杂
  • 记得搞他的getter和setter方法,还是tostring方法哦
package junmu.domain;

public class User {
    private int id;
    private String username;
    private String password;

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

    public int getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}

四、编写映射文件

  • 重点来了,兄弟们,这个里面放的就是我们的自己写的 SQL 语句拉,
  • 不同类型的语句要使用不同类型的标签哦
  • 这里我叫叫做userMapper了哈,使用的是dtd约束,不懂的可以回去看看xml详解哈
  • 然后调用里面的sql语句也很简单的,直接 userMapper.findAll
  • 就是使用 namespace.id 的形式来调用,后面会说哦
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="userMapper">
    <select id="findAll" resultType="user">
        select * from user
    </select>
    
    <insert id="save" parameterType="junmu.domain.User">
        insert into user values(#{id},#{username},#{password})
    </insert>
    
    <update id="update" parameterType="junmu.domain.User">
        update user set username=#{username},password=#{password} where id=#{id}
    </update>
    
    <delete id="delete" parameterType="java.lang.Integer">
        delete from user where id = #{id}
    </delete>
</mapper>

五、编写核心文件

  • 这个估计就是最重要的了,里面的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>

    <!--通过properties标签加载外部properties文件-->
    <properties resource="jdbc.properties"/>

    <!--自定义别名-->
    <typeAliases>
        <typeAlias type="junmu.domain.User" alias="user"/>
    </typeAliases>

    <!--数据源环境-->
    <environments default="developement">
        <environment id="developement">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <!--加载映射文件-->
    <mappers>
        <mapper resource="junmu/mapper/UserMapper.xml"/>
    </mappers>
    
</configuration>
  • 我们依次来说说哈!
  • properties 标签,这个就是用到导入外部数据的这个没给出来哈,啊哈哈哈哈
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/day14?characterEncoding=utf-8&serverTimezone=UTC
jdbc.username=root
jdbc.password=root
initialSize=5
maxActive=10
maxWait=3000
filters=stat
timeBetweenEvictionRunsMillis=60000
minEvictableIdleTimeMillis=300000
validationQuery=SELECT 1
testWhileIdle=true
testOnBorrow=false
testOnReturn=false
poolPreparedStatements=false
maxPoolPreparedStatementPerConnectionSize=200

  • 就是这个拉,properties 标签就可以导入这些数据拉,然后用法也很简单,使用 ${数据名} 就可以调用了
  • 然后我们在看看 typeAliases 标签,这个标签就是用来定义别名的,当我们的类型特别长的时候,我们就可以使用这个,然后变的很短,然后在映射文件里面使用
  • environments 标签用于定义环境,就是JDBC什么什么的,还是配置里面的数据环境呀。
  • mappers 标签,这个用来加载上面那个映射文件,绑定在一起

七、编写测试类

  • 好了,到这里,我们就可来实验实验我们的MyBatis是否可以用了哈,
  • 因为,这里是讲MyBatis入门,我们就先以客户端的形式来编写拉,不然还要配其他无关的知识。。
  • 先放代码吧
public class MyBatisTest {
    @Test
    public void test1() throws IOException {
        // 获取核心配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
        // 获取sql session 工厂对象
        SqlSessionFactory build = new SqlSessionFactoryBuilder().build(resourceAsStream);
        // 获取session会话对象
        SqlSession sqlSession = build.openSession();
        // 执行操作  参数:namespace + id
        List<User> list = sqlSession.selectList("userMapper.findAll");
        // 打印
        for (User user : list) {
            System.out.println(user);
        }
        // 释放资源
        sqlSession.close();
    }
}
  • 前面三句就是获取 sqlSession 的哈,这玩意就是MyBatis的客户端,了解下就可以了,反正以后也不用写,获取之后呢,我们就可以使用sqlSession来进行操作了
  • 然后我们来看看他的 api 使用哈

在这里插入图片描述

  • 对于不同的语句有不同的操作哦
  • 比如查询,我们使用selectone 或者selectlist
List<User> list = sqlSession.selectList("userMapper.findAll");
  • 修改操作的时候,我们使用update
      User user = new User();
        user.setId(7);
        user.setUsername("刑天铠甲");
        user.setPassword("999");
        sqlSession.update("userMapper.update",user);
        sqlSession.commit();
  • 咳咳,这个有个坑哈,对于要修改数据内容的,要进行事务的提交哈
  • 因为MyBatis里,默认是不自动提交的哦,这就很烦~
  • 然后可以在build.openSession();的时候里面设置成true
        SqlSession sqlSession = build.openSession(true);
  • 这样就表示他会自动提交了,就不用我们进行手动commit了
  • 然后mybatis就入门拉,是不是很简单呢,嘿嘿,
  • 哦哦哦,对了,注意哈,
  • 在映射文件里面,要用 #{ } 来注入哈, 千万不要用 ${} 啊哈哈哈,怕某些人习惯了,改不过来。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木木不会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值