//书写我的第一个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一致。

mybati之入门demo的更多相关文章

  1. 【SSH系列】初识spring+入门demo

    学习过了hibernate,也就是冬天,经过一个冬天的冬眠,当春风吹绿大地,万物复苏,我们迎来了spring,在前面的一系列博文中,小编介绍hibernate的相关知识,接下来的博文中,小编将继续介绍 ...

  2. 基于springboot构建dubbo的入门demo

    之前记录了构建dubbo入门demo所需的环境以及基于普通maven项目构建dubbo的入门案例,今天记录在这些的基础上基于springboot来构建dubbo的入门demo:众所周知,springb ...

  3. apollo入门demo实战(二)

    1. apollo入门demo实战(二) 1.1. 下载demo 从下列地址下载官方脚本和官方代码 https://github.com/nobodyiam/apollo-build-scripts ...

  4. lua入门demo(HelloWorld+redis读取)

    1. lua入门demo 1.1. 入门之Hello World!! 由于我习惯用docker安装各种软件,这次的lua脚本也是运行在docker容器上 openresty是nginx+lua的各种模 ...

  5. netty入门demo(一)

    目录 前言 正文 代码部分 服务端 客服端 测试结果一: 解决粘包,拆包的问题 总结 前言 最近做一个项目: 大概需求: 多个温度传感器不断向java服务发送温度数据,该传感器采用socket发送数据 ...

  6. canal入门Demo

    关于canal具体的原理,以及应用场景,可以参考开发文档:https://github.com/alibaba/canal 下面给出canal的入门Demo (一)部署canal服务器 可以参考官方文 ...

  7. C#中缓存的使用 ajax请求基于restFul的WebApi(post、get、delete、put) 让 .NET 更方便的导入导出 Excel .net core api +swagger(一个简单的入门demo 使用codefirst+mysql) C# 位运算详解 c# 交错数组 c# 数组协变 C# 添加Excel表单控件(Form Controls) C#串口通信程序

    C#中缓存的使用   缓存的概念及优缺点在这里就不多做介绍,主要介绍一下使用的方法. 1.在ASP.NET中页面缓存的使用方法简单,只需要在aspx页的顶部加上一句声明即可:  <%@ Outp ...

  8. SpringBoot 入门 Demo

    SpringBoot   入门 Demo Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从 ...

  9. ReactJs 入门DEMO(转自别人)

    附件是分享的一些他人的ReactJs入门DEMO,以前版本使用的是JSXTransformer.js,新版的用browser.min.js替代了. DEMO 下载地址:http://files.cnb ...

随机推荐

  1. 图文教程:手把手教你用U盘安装Ubuntu

    说到ubuntu,有接触linux的童鞋都应该听过,用wubi安装只是像在电脑上安装一个软件,可以轻松体验ubuntu,不过毕竟性能会打折扣,所以本人是比较喜欢直接安装在硬盘上的. 这种方法只适合用d ...

  2. MD5加密运算

    //MD5 对字符串的加密 -(void)demo1 { NSString *str = @"love"; //对字符串进行MD5加密 str = str.md5String; N ...

  3. zepto源码研究 - ajax.js($.ajax具体流程分析)

    简要:$.ajax是zepto发送请求的核心方法,$.get,$.post,$.jsonp都是封装了$.ajax方法.$.ajax将jsonp与异步请求的代码格式统一起来,内部主要是先处理url,数据 ...

  4. restful风格的webservice开发之概念准备篇

    理解restful:什么是rest,rest是Representational State Transfer的缩写,翻译过来就是“表现层状态转化”.这里有点不准确,其实rest省略了主语表现层指的是资 ...

  5. sql函数(转)

    一旦成功地从表中检索出数据,就需要进一步操纵这些数据,以获得有用或有意义的结果.这些要求包括:执行计算与数学运算.转换数据.解析数值.组合值和聚合一个范围内的值等. 下表给出了T-SQL函数的类别和描 ...

  6. memcache的使用

    什么是memcache? Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像.视频.文件以及数据库检索的结果等. ...

  7. Nginx源码研究二:NGINX的事件处理概论

    NGINX作为服务端的应用程序,在客户端发出数据后,服务端在做着这样一些处理,数据先会经过网卡,网卡会和操作系统做交互,经过操作系统的协议栈处理,再和不同的应用程序交互. 在这里面涉及两个概念,一个是 ...

  8. js前台与后台数据交互

    客户端脚本一般都在前台,这里讲的是(1)在后台调用前台定义的脚本(2)在后台如何注册客户端脚本 用途 何时使用服务器代码向页中添加客户端脚本: u 当客户端脚本的内容依赖于直到运行时才可用的信息时 u ...

  9. ora-01445 无法从不带保留关键字的表的联接视图中选择 ROWID 或采样

    ora-01445无法从不带保留关键字的表的联接视图中选择 ROWID 或采样 从网上找了很多资料,许多都是没结贴的,说什么的都有,排查了一下sql 发现各个段的left join都没有错误. 有一个 ...

  10. 怎样卸载goldengate

    1. Log on to the database server (as oracle) where the GoldenGate software isinstalled.2. Change dir ...