SSM框架学习16-MyBatis操作(未整合spring版)

作为优秀的持久层框架,在开发中作用非常大,到这里我们就开始了mybatis的学习,马上来到了我们ssm框架学习的最后一步。

这里具体讲操作方式:

目录

1. 导入mybatis的坐标

2. 配置映射文件和核心配置文件

3. 业务中具体使用


1. 导入mybatis的坐标

<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.4.5</version>
      </dependency>

在使用mybatis时,我们驱动肯定也是需要导入的。

2. 配置映射文件和核心配置文件

这里列出我们需要知道的几点

1. 这两个文件都是xml文件

2. 都是我们使用mybatis时必不可少的配置文件

3.都需要自己写上约束头

映射文件的约束头:

<?xml version="1.0" encoding="UTF-8"?>
<!--约束头自己导入,可以参考这个,这是使用mybatis时的映射配置文件-->
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

根标签是<mapper>

核心配置文件的约束头:

<?xml version="1.0" encoding="UTF-8"?>
<!--mybatis的核心配置文件的约束头,可以直接用-->
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">

根标签是<configuration>

这些都准备好后,才正式开始编写配置文件,首先是映射文件,这里起了名字叫做usermapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!--约束头自己导入,可以参考这个,这是使用mybatis时的映射配置文件-->
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--必须要配mapper映射,给个命名空间方便调用语句,使用findAll的语句的方法就是:usermapper.findAll,对应的结果封装在resultType里-->
<mapper namespace="usermapper">
<!--    语句里是from表-->

<!--    删除操作 这里得到一个int类型的id即可,所有参数类型是int的全包名,当传递的参数只有一个单值,没有属性时,#{}里属性名随意,反正后面只能取到这个参数本身-->
    <delete id="delete" parameterType="java.lang.Integer">
        delete from tb_user where id=#{id}
    </delete>

<!--    修改操作-->
    <update id="update" parameterType="com.dzy.model.User">
        update tb_user set username=#{username},password=#{password} where id=#{id}
    </update>


<!--    插入操作 这用parameterType设置的类来匹配填入,通过#{}的方法,内部填对应的属性名-->
    <insert id="insert" parameterType="com.dzy.model.User">
        insert into tb_user values(#{id},#{username},#{password})
    </insert>


<!--    查询操作-->
    <select id="findAll" resultType="com.dzy.model.User">
        select * from tb_user
    </select>
</mapper>

首先mapper标签后面加上namespace属性,自己指定一个名字,作用可以看注释,这里包含了增删改查的操作,不同的标签,不同的匹配属性,不同的sql语句,可以有不同的id。

有时候我们会觉得写 parameterType或者resultType,一大串原包名太麻烦了,这是就可以用下面的方法来定义别名:(typeAliases这个标签需要在核心配置文件下作为第一个标签或者在properties标签后,environments标签前才可生效。)

此外:

核心配置文件配置如下:
 

<?xml version="1.0" encoding="UTF-8"?>
<!--mybatis的核心配置文件的约束头,可以直接用-->
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--根标签时configuration-->
<configuration>
    
<!--    配置数据源环境-->
<!--    环境可以有很多个数据源环境,最外层的default是指名默认用哪一个环境-->
    <environments default="develop">
        <environment id="develop">
            <!--配置这个数据源环境的事务管理器-->
            <transactionManager type="JDBC"></transactionManager>
            <!--配置这个数据源的类型:这里是数据池思想,配POOLED-->
            <dataSource type="POOLED">
                <!--这里配置数据库连接老四样,都是老面孔了-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/taobao"/>
                <property name="username" value="root"/>
                <property name="password" value="dzy2001818"/>
            </dataSource>
        </environment>
    </environments>
<!--    加载映射文件:核心配置文件需要知道映射文件在哪里,这里加载mapper文件时路径中用/-->
    <mappers>
        <mapper resource="usermapper.xml"/>
    </mappers>
    
</configuration>

这里主要是配置我们数据源的环境,属性,事务控制器类型,以及后面指定使用的mapper(映射文件)有哪些,这样后面才可以使用到我们映射文件里编写的sql语句,这里的四个连接的property都可以用引入properties文件的方法:

3. 业务中具体使用

这里未与spring整合起来,所以代码比较繁琐,但是可以掌握一下,等到后期整合简化后容易理清来龙去脉,先放代码:

@Test//查询
    public void test1() throws IOException {
        //获得核心配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapperconfig.xml");
        //获得sqlSession工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        //通过工厂对象获得会话对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //通过session我们执行操作  这里的参数就是:namespace+id,查操作
        List<User> list=sqlSession.selectList("usermapper.findAll");//这里是执行查询语句后将查询到的对象们变为列表
        //打印
        System.out.println(list);
        //释放资源——session
        sqlSession.close();
    }
    @Test//插入
    public void test2() throws IOException {
        //模拟这里得到了一个要插入的user对象
        User user =new User();
        user.setId(6);
        user.setUsername("dzy");
        user.setPassword("1234566");

        //获得核心配置文件
        InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapperconfig.xml");
        //获得sqlSession工厂对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        //通过工厂对象获得会话对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //通过session我们执行操作  这里的参数就是:namespace+id,插入操作,这里的user要传参直接写后面,insert接收两个参数
        sqlSession.insert("usermapper.insert",user);
        //mybatis如果需要更新数据库需要进行事务的提交操作
        sqlSession.commit();
        //释放资源——session
        sqlSession.close();
    }

这里先放的查和增的业务代码,首先需要明白,使用mybatis来操作数据库时,是通过sqlSession这个会话对象来操作的,而这个对象是sqlSessionFactory这个工厂来制造的,然后这个工厂需要一个核心是通过inputstream的对象来建造(bulid)的。

会话创建好之后,有各种操作可以用,全套增删改查,具体可以参照上面的代码,然后可以看到,操作后面的括号里就是我们之前的命名空间和设置的sql的id,这里就是他的引用方式,然后后面就是需要传入的参数对象,当然查询操作不需要传参,他就没有参数对象,然后我们需要提交事务,但是不改变数据库的可以不用提交事务,最后我们要释放资源,将会话关闭。

整体的mybatis原始开发流程就是这样。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值