• mybati之入门demo


    //书写我的第一个mybaits程序,主要讲的是mybatis-config.xml的文件

    需求:根据用户名查询用户信息;

    1、  通过session调用selectOnt(statme,"zhangsan")

    2、  创建User的实体类

    3、  创建UserMapper.xml文件

    4、  在Mybatis-config.xml中将mapper.xml文件导入

        public static void main(String[] args) throws Exception {

            // 定义配置文件路径

            String resource = "mybatis-config.xml";

            // 读取配置文件

            InputStream inputStream = Resources.getResourceAsStream(resource);

            // 通过SqlSessionFactoryBuilder构建一个SqlSessionFactory

            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

            System.out.println(sqlSessionFactory);

            // 通过sqlSessionFactory获得SqlSession对象

            SqlSession session = sqlSessionFactory.openSession();

            System.out.println(session);

     

            User user = session.selectOne("cn.itcast.mybatis.user.queryUserByUserName", "zhangsan");

            System.out.println(user);

    }

    //mapper.xml

    <mapper namespace="cn.itcast.mybatis.user">

       <select id="queryUserByUserName" resultType="cn.itcast.mybatis.pojo.User">

          SELECT *, user_name userName  FROM tb_user WHERE user_name = #{userName}

       </select>

    </mapper>

     

    //注意:

    其中namespace是接口的全路径,id是方法名,保证唯一,

     

    <?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="jdbc.properties"/>
      <settings>
          <!-- 开启驼峰自动映射 -->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
      </settings>
      <typeAliases>
          <!-- 设置别名 -->
          <!-- <typeAlias type="cn.itcast.mybatis.pojo.User" alias="user"/> -->
          <package name="cn.itcast.mybatis.pojo"/>
       </typeAliases>
          <!-- 指定环境 -->
      <environments default="development">
            <environment id="development">
            <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>

    <!-- 配置测试环境的数据库  -->
             <environment id="test">
            <transactionManager type="JDBC" />
              <dataSource type="POOLED">
                  <property name="driver" value="${jdbc.test.driver}" />
                  <property name="url" value="${jdbc.test.url}" />
                  <property name="username" value="${jdbc.test.username}" />
                  <property name="password" value="${jdbc.test.password}" />
              </dataSource>
          </environment>
      </environments>
    <mappers>

    <!--  配置单个mapper.xml文件    -->
    <!-- <mapper resource="UserMapper.xml" /> -->
    <!-- <mapper resource="UserMapper2.xml" /> -->
    <!-- <mapper class="cn.itcast.mybatis.dao.IUser"/> -->

    <!-- 配置扫描包,此包下的文件全部被读取到  -->
    <package name="cn.itcast.mybatis.dao"/>
    </mappers>
    </configuration>

    //注意:

    // 构造SqlSessionFactory
    // 定义配置文件路径
    String resource = "mybatis-config.xml";
    // 读取配置文件
    InputStream inputStream = Resources.getResourceAsStream(resource);
    // 通过SqlSessionFactoryBuilder构建一个SqlSessionFactory
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream,"test");
    this.sqlSession = sqlSessionFactory.openSession(false);
    this.userDAO = sqlSession.getMapper(IUser.class);

    总结:

    如果手动实现接口实现类,namespace和Statement的id随便定义;

    如果使用动态代理实现类,namespace和Statement必须按照约定来定义;

    使用mapper接口不用写接口实现类即可完成数据库操作,使用非常简单,也是官方所推荐的使用方法。

    使用mapper接口的必须具备以几个条件:

    1)       Mapper的namespace必须和mapper接口的全路径一致。

    2)       Mapper接口的方法名必须和sql定义的id一致。

    3)       Mapper接口中方法的输入参数类型必须和sql定义的parameterType一致。

    4)       Mapper接口中方法的输出参数类型必须和sql定义的resultType一致。

  • 相关阅读:
    Linux实现ftp账号同时访问两个目录方法
    ubuntu系统中的VMware 安装win7 Ghost镜像的几个坑
    ubuntu14.04LTS安装vmware10.0.1
    翻页特效
    使用Fragment应用放置后台很久,被系统回收,出现crash
    Android软件安全开发实践(下)
    移动应用安全开发指南(Android)--完结篇(http://www.bubuko.com/infodetail-577312.html)
    数字签名与数字加密
    time_wait 原理分析和优化
    Go中http超时问题的排查
  • 原文地址:https://www.cnblogs.com/wangchuanfu/p/5877692.html
Copyright © 2020-2023  润新知