Mybatis的第一个Demo

创建maven工程

针对初学者,也是为了加强自己的记忆,写了这篇关于mybatis的使用步骤以及拓展分页控件的使用,第一次写博客,不喜勿碰。

导入依赖

    <!--    mybatis-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.5.5</version>
    </dependency>
    <!--    jdbc驱动-->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.49</version>
    </dependency>
    <!--    pagehelper-->
    <dependency>
      <groupId>com.github.pagehelper</groupId>
      <artifactId>pagehelper</artifactId>
      <version>5.1.10</version>
    </dependency>

对于mysql-connector-java的版本号version 不宜过高 ,新版本会有一个serverTimezone不正确的错误 默认是UTC,但是我们属于东八区(UTC+8)避免多次修改使用相对稳定的版本5.1.49即可

创建pojo层

这里只是简单的举个例子

public class User {
    private String name;
    private Integer price;
,,,,  set get , 重写 toString 
需要用到算hash值以及比较对象(重写equals,hashCode方法),,,
}

创建Dao层

这层是对数据操作的代码集(具体需要干什么 增删改查 )。
定义接口:


public interface UserDao {
    List<User> selectUser();
}

对应一个Dao 编写相应的mapper配置文件

<?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.fwj.dao.UserDao">

    <select id="selectUser" resultType="com.fwj.user.User" >
        select name,price from people
    </select>

</mapper>

有几点需要注意

  1. namespace:需要对应Dao接口的全限定名称——包名+类名。
  2. mapper根标签里面的 < select>< insert>< delete>< update>中的id与接口 的方法名对应
  3. resultType 返回结果类型 后面跟pojo的全限定名称——包名+类名
  4. parameterType 参数数据类型 全限定名称——包名+类名

mybatis主配置文件

连接到数据库的配置文件

<?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 resource="application.properties"/>
    <!-- 设置:定义mybatis的一些全局性设置 -->

    <!-- 插件:mybatis的插件,分页处理 -->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
    </plugins>
    <!-- 环境:配置mybatis的环境 -->
    <environments default="mysql">
        <!-- 环境变量:可以配置多个环境变量,比如使用多数据源时,就需要配置多个环境变量 -->
        <environment id="mysql">
            <!-- 事务管理器 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 数据源 -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.name}"/>
                <property name="password" value="${jdbc.pass}"/>
            </dataSource>
        </environment>
    </environments>
    <!-- 映射器:指定映射文件或者映射类 -->
    <mappers> 
        <mapper resource="com\fwj\dao\Usermapper.xml"/>
    </mappers>
</configuration>

可以分为以下几个模块:

<?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">

头文件,固定的。mybatis-3-config.dtd 说明文件的类型

<configuration>
</configuration>

根标签 ,里面是对 连接源,事务管理,mapper,插件的说明

<!-- 连接外部资源-->
    <properties resource="application.properties"/>

连接外部资源 , 可选,方便后续修改配置

 <!-- 插件:mybatis的插件,分页处理 -->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
    </plugins>

分页插件 ,各种插件也是类似的写法

 <!-- 环境:配置mybatis的环境 -->
    <environments default="mysql">
        <!-- 环境变量:可以配置多个环境变量,比如使用多数据源时,就需要配置多个环境变量 -->
        <environment id="mysql">
            <!-- 事务管理器 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 数据源 -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.name}"/>
                <property name="password" value="${jdbc.pass}"/>
            </dataSource>
        </environment>
    </environments>

连接数据库管理

<environment id="mysql">
            <!-- 事务管理器 -->
            <transactionManager type="JDBC"></transactionManager>
            <!-- 数据源 -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.name}"/>
                <property name="password" value="${jdbc.pass}"/>
            </dataSource>
</environment>

environment可以是多个,每一个对用一个数据库的基本访问配置 项目通过 id 与 environments 中的 default=“mysql” 属性对应

 <mappers> 
        <mapper resource="com\fwj\dao\Usermapper.xml"/>
 </mappers>

对应的所有mapper 可以有多个引用 resource 里面的路径是 target下的classes路径 默认java包里面的properties和xml文件是被忽略的 所以要在pom-build中添加下面的插件,防止被mapper被忽略(可通过maven的编译(compile)来查看target classes下是否存在xml或者properties文件)
此处涉及到maven工程的生命周期.

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

测试结果

  /**
         * 使用mybatis的动态代理,使用Sqlsession.getMapper(dao接口)
         * getMapper能获取到接口对应的实现类对象
         */
        //读取mybatis.xml文件
        InputStream resourceAsStream = Resources.getResourceAsStream("mybatis.xml");
        //创建Sqlsessionfactory对象
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
        //通过Sqlsessionfactory创建Sqlsession对象
        SqlSession sqlSession = sqlSessionFactory.openSession();
        //使用getMapper(dao接口.class)
        UserDao userDao = sqlSession.getMapper(UserDao.class);
        //分页处理:pageNum:当前的页数,pageSize:每页多少行

        PageHelper.startPage(2,3);
        List<User> users = userDao.selectUser();
//        String sql = "com.fwj.dao.UserDao"+"."+"selectUser";
//        List<User> users = sqlSession.selectList(sql);
        for(User u :users){
            System.out.println(u);
        }

这里看到运行结果没有问题,ojbk 不能再假正常了
在这里插入图片描述
忘了自我介绍,,,我是小猪,一个自学java的应届生。第一次写博客,很多地方欠缺不足,希望以后继续努力,持续改进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值