一:配置MyBaits的开发环境

1.1.核心配置文件

正如hibernate一样,MyBaits也有一个核心的配置文件,它包含着数据源地址,用户名,密码等,还有着各个实体类的配置文件,配置文件是xml类型的,至于文件名,则可以随意写,我这里取名作conf.xml,本文章中,都以这个名字为核心配置文件的名称,下面我们来写一个User类:

<?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>
<!-- environments的devault有两个值,
一个是development开发模式
一个是work工作模式,一般开发完成后会改为work模式
-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
<property name="username" value="root" />
<property name="password" value="zxj65681140" />
</dataSource>
</environment>
</environments> <!-- 这里映射那些实体类的配置文件 -->
<mappers>
<!-- 引入使用配置文件的写法 -->
<mapper resource="zxj/domain/userMapper.xml"/>
<mapper resource="zxj/crud/userMapper.xml"/>
<!-- 引入注解的写法 -->
<mapper class="zxj.annotation.interfac.UserMapper"/>
</mappers>
</configuration>

1.2.实体类与实体类的映射文件

写完核心的配置文件的时候,我们就要准备实体类,也就是一个javabean,同样也是要有着get与set方法,下面我们来写一个简单的bean:

package zxj.domain;

public class User {
private int id;
private String name;
private int age; public User(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
} public User() {
super();
} public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
} }

这是一个再简单不过的实体类了,然后再来写它的配置文件,配置文件一船会以类的名字+Mapper.xml,例如userMapper.xml,当然你也可以写其它的,下面给出Mybatis的简单的一个映射关系的写法:

<?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="zxj.crud.userMapper">
<!-- crud操作 -->
<!-- 代表着传递过来的类型 -->
<!-- #{}中的值不可以乱写,如果parameterType是一个对象,那就必须写这个对象的属性 -->
<insert id="addUser" parameterType="zxj.domain.User">
insert into users(name,age) value(#{name},#{age})
</insert>
<!-- 删除一条纪录 -->
<delete id="deleteUser" parameterType="int">
delete fm users where id=#{id}
</delete>
<!-- 更新一条纪录 -->
<update id="updateUser" parameterType="zxj.domain.User">
update users set name=#{name},age=#{age} where id=#{id}
</update> <!-- 查询所有,指定返回类型为User对象 -->
<select id="getAllUsers" resultType="zxj.domain.User">
select * from users
</select> <!-- 根据id查询,得到一个User对象 -->
<select id="getUser" parameterType="int" resultType="zxj.domain.User">
select * from users where id=#{id}
</select>
</mapper>

看完上面配置文件的写法,如果懂Hibernate的人就会知道,这和hibernate的配置文件就是有些不同了,因为hibernate是完全的是面向对象的编程,不需要自己写sql,而mybatis需要程序员把sql写好,所以也注定了mybatis要比hibernate要更加灵活。

下面来介绍一下配置文件

(1)这里分别有着四个标签,分别对应增删改查,而每个标签又有一个id,这个Id就是操作数据库时需要引用的一个字符串。

(2)namespace就是这个配置文件的一个名称空间,是为配置文件分类的,就类似于java中的包一样。

(3)parameterType,参数类型,这个类型可以写一个基本数据类型,也可以写一个对象,比如说要增加一条纪录的时候,肯定是传一个对象过去的,然后在下面的占位符中,就可以写这个对象的属性字段。如果要删除一条纪录,则是是传一个id过去,则可以定义为int。

(4)resultType返回的结果类型,就是操作完数据库时返回的结果,它有可能是受影响的行数,也可能是查询完的一个对象,也可能是一个多条的list集合,所以也可以定义为基本数据类型或者是一个对象

1.3.简单的使用mybatis

写完基本的数据类型后,就需要来测试是否可以正常使用了,下面写一个测试类:

/**
* 测试根据id来查找,配置文件的写法
*/
@Test
public void testSelect() {
// 使用类加载器加载Mybaits的配置文件,得到inputstream输入流
InputStream in = TestMybaits.class.getClassLoader().getResourceAsStream("conf.xml");
// 创建sessionFactory
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
// 得到session
SqlSession session = factory.openSession();
// 这是userMapping的名称空间加上id
String statement = "zxj.domain.userMapper.getUser";
// 第二个参数是占位符,代表查找Id为2的数据,返回user对象
User user = session.selectOne(statement, 1);
System.out.println(user);
session.close();
}

如上的代码如示,先是根据inputStream流来加载配置文件,然后后面的就是创建工厂,然后创建session,然后用session操作数据库,然后关闭session。

MyBaits学习的更多相关文章

  1. Mybaits学习总结2

    http://www.cnblogs.com/xdp-gacl/p/4262895.html 继续参考这篇文章写Mybaits学习总结 上一章,我修改了编码,统一为UTF8之后,便没有编码错误 < ...

  2. mybaits 学习

    mybaits  学习(一) 注意:如果建的是web项目,run as java application 参考http://www.cnblogs.com/xdp-gacl/p/4261895.htm ...

  3. (原创)mybaits学习三,springMVC和mybatis融合

    上一节,总计了spring和mybaits的融合,这一节,我们来学习springmvc和mybatis融合 最近在弄一个SSM的项目,然后在网上找资料,将资料总结如下 一,开发环境的配置 MyEcli ...

  4. Mybaits学习总结1

    http://www.cnblogs.com/xdp-gacl/p/4261895.html 参考了这篇文章搭建了Mybaits环境,原作者有些地方没有标注使用某种编码,我是自学SQL的,所以深知编码 ...

  5. MyBaits学习03(ResultMap和分页)

    5.ResultMap 5.1 查询为null问题 要解决的问题:属性名和字段名不一致 环境:新建一个项目,将之前的项目拷贝过来 1.数据库里的属性 2.Java中的实体类设计 public clas ...

  6. 原生mybaits学习笔记

    目录 简介 maven引入 核心配置文件 方式一(简单) 配置 操作 方式二(old) 创建接口 配置mapper.xml 实现接口 操作 方式三(常用) 创建接口 配置mapper.xml 操作 配 ...

  7. Mybaits学习总结

    一.Mybatis介绍 邮箱:1727292697 MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架.MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的 ...

  8. (原创)mybatis学习二,spring和mybatis的融合

    mybatis学习一夯实基础 上文介绍了mybatis的相关知识,这一节主要来介绍mybaits和spring的融合 一,环境搭建 1,jar包下载,下载路径为jar包 2,将包导入到java工程中 ...

  9. mybaits入门学习

    学习了简单的mybatis的配置 Bean层: 这个都会很简单 一个完整的Bean 需要getter和setter方法还需要一个空的构造方法和一个满的构造方法. Dao层: 创建一个接口就ok了 pa ...

随机推荐

  1. linux-12基本命令之 cat,more,head, tail ,tr,od,wc,cut,diff

    1.cat 命令 用于查看纯文本文件(较短),格式:"cat[选项][文件]" 查看文本文件 [root@localhost /]# cat 文件名 cat 参数 参数 作用 -n ...

  2. Magicodes.WeiChat——版本发布历史

    购买地址:https://item.taobao.com/item.htm?id=520205558575 您可以在新标签页打开此图,以查看原始图片. Magicodes.WeiChat为湖南心莱信息 ...

  3. nginx(3、负载均衡)

    当业务系统需要配置集群时,会用到nginx的负载均衡功能.nginx提供如下几种: 1.轮询(默认):将不同的请求随机分配给配置的服务器,若出现宕机,则自动切换:轮询可配置weight值,即权重,权重 ...

  4. Unity3D ogg下载并播放

    那天说了c#不好弄ogg和mp3的解码,然后就发现打脸了. 找到了一些开源的解码器,由于ogg的音质容量比要明显好于mp3,主要弄ogg的播放. 由于自带解码器,可以实现全平台下载并播放,甚至可以实现 ...

  5. Golang下的Log处理

    原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com 后端系统中的Log是相当重要的,做过高并发服务的同学都会认同这一点.相对而言,调试已经用处不大了,对于这样的项目, ...

  6. 【OpenGL(SharpGL)】支持任意相机可平移缩放的轨迹球实现

    [OpenGL(SharpGL)]支持任意相机可平移缩放的轨迹球 (本文PDF版在这里.) 在3D程序中,轨迹球(ArcBall)可以让你只用鼠标来控制模型(旋转),便于观察.在这里(http://w ...

  7. 爱上MVC3系列~开发一个站点地图(俗称面包屑)

    回到目录 原来早在webform控件时代就有了SiteMap这个东西,而进行MVC时代后,我们也希望有这样一个东西,它为我们提供了不少方便,如很方便的实现页面导航的内容修改,页面导航的样式换肤等. 我 ...

  8. ServletConfig对象详解

    在Servlet 的配置文件中,可以用一个或多个<init-param>标签为servlet配置一些初始化参数. 当servlet配置了初始化参数之后,web容器在创建servlet实例对 ...

  9. Web端即时通讯技术盘点:短轮询、Comet、Websocket、SSE

    1. 前言 Web端即时通讯技术因受限于浏览器的设计限制,一直以来实现起来并不容易,主流的Web端即时通讯方案大致有4种:传统Ajax短轮询.Comet技术.WebSocket技术.SSE(Serve ...

  10. HTTP学习四:SPDY和HTTP/2.0

    1 HTTP1.0/1.1与HTTPS的不足 1.1 HTTP1.0/1.1不足 单路连接 HTTP 协议的最大弊端就是每个 TCP 连接只能对应一个 HTTP 请求,即每个 HTTP 连接只请求一个 ...