最近研究了一些MyBatis技术,虽然工作中还未用到,但是觉得了解一下也是不错的.这里记录了第一个简单的Demo程序,防止自己忘记.

第一步需要配置Mybatis-config.xml文件.注意:这里使用了2种方式对实体类进行了映射.在<Mapper>中,第一个User对象用XMl格式进行映射,第二个Category用注解CategoryMappper格式进行映射.

<?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" ></properties>
<!-- <typeAliases>
<package name="com.mybatis02.model"/>
</typeAliases> -->
<environments default="devEnvironment">
<environment id="devEnvironment">
<transactionManager type="JDBC"></transactionManager>
<dataSource type="POOLED">
<property name="driver" value="${dirver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<!-- 利用XML格式对User对象进行映射 -->
<mapper resource="com/mybatis02/model/User.xml"/>
<!-- 用注解模式对Category进行映射 -->
<mapper class="com.mybatis02.mapper.CategoryMapper"/>
</mappers>
</configuration>

第二步对mybatis-config.xml进行解析

public class MyBatisUtil {
private static SqlSessionFactory factory;
static{
try {
InputStream in = Resources.class.getResourceAsStream("mybatis-config.xml");
factory = new SqlSessionFactoryBuilder().build(in);
} catch (Exception e) {
e.printStackTrace();
}
} public static SqlSession createSession(){
return factory.openSession();
} public static void closeSession(SqlSession session){
if (session != null) {
session.close();
}
}
}

下面分2中方式,对xml格式和注解方式分别进行介绍:

XML格式:

1.1.创建实体类User(这里省略了get和set方法)

public class User {
private int id;
private String username;
private String password;
private String nickname;
private int type;
private List<Address> addresses;
...
}

1.2.创建User对象的xml映射文件.这里需要注意:namespace属性,需要配置User类的全路径.定义了一个id为add的Insert操作.其参数类型(parameterType)为一个User对象

<?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.mybatis02.model.User">
<insert id="add" parameterType="com.mybatis02.model.User">
insert t_user(id,username,password,nickname,type)
values(#{id},#{username},#{password},#{nickname},#{type})
</insert>
</mapper>

1.3.对XML映射方式进行测试

    @Test
public void testAdd() {
// 1.创建Mybatis配置文件输入流
InputStream in = null;
try {
in = Resources.getResourceAsStream("mybatis-config.xml");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 2.创建SqlSessionFactory
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
// 3.创建SQlSession
SqlSession session = factory.openSession();
// 4.调用UserMapper文件,将对象插入数据库(在调用文件之前,需要将mapper文件加入到mybatis-config.xml中)
User user = new User();
user.setId(8);
user.setUsername("张飞");
user.setPassword("123");
user.setNickname("张三");
user.setType(1);
session.insert("com.mybatis02.model.User.add", user);
session.commit();
session.close();
}

对注解映射方式进行demo的编写.

2.1.同样创建实体类

public class Category {
private int id;
private String name; 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;
}
}

2.2 创建CategoryMapper映射类 创建了一个add方法,在方法上添加Insert操作,执行对应的sql.

这个文件在第一步中的mybatis-config.xml中引入.

 <mapper class="com.mybatis02.mapper.CategoryMapper"/>
public interface CategoryMapper {
@Insert("insert into t_category(id,name) value (#{id},#{name})")
public void add(Category category); }

2.3 测试

@Test
public void testCategory() {
// 1.创建Mybatis配置文件输入流
InputStream in = null;
try {
in = Resources.getResourceAsStream("mybatis-config.xml");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 2.创建SqlSessionFactory
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);
// 3.创建SQlSession
SqlSession session = factory.openSession();
// 4.调用CategoryMapper接口,将对象插入数据库(在调用文件之前,需要将mapper文件加入到mybatis-config.xml中)
Category category = new Category();
category.setId(1);
category.setName("衣服");
session.insert("com.mybatis02.mapper.CategoryMapper.add", category);
session.commit();
session.close();
}

感触:最开始写demo,报了一个错误,原来我把xml方式映射和注解方式映射弄混了.两种方式各取一半,报了各种错误.

以后遇到问题,需要一步一步的推敲.保持逻辑的清晰,才能更加准确的定位错误,及时发现和修正错误.

第一个MyBatis程序的更多相关文章

  1. 第一个Mybatis程序示例 Mybatis简介(一)

    在JDBC小结中(可以参阅本人JDBC系列文章),介绍到了ORM,其中Mybatis就是一个不错的ORM框架 MyBatis由iBatis演化而来 iBATIS一词来源于“internet”和“aba ...

  2. 我的第一个Mybatis程序

    第一个Mybatis程序 在JDBC小结中(可以参阅本人JDBC系列文章),介绍到了ORM,其中Mybatis就是一个不错的ORM框架 MyBatis由iBatis演化而来 iBATIS一词来源于“i ...

  3. 第一个MyBatis程序(博客初写者)

    第一个Mybatis程序 一.环境: 1.JDK1.8 2.MYSQL5.7 3.IDEA 4.MAVEN 3.63 二.Mybatis认识: 1.查看官方文档 https://mybatis.org ...

  4. MyBatis-02-第一个Mybatis程序

    2.第一个Mybatis程序 思路:搭建环境-->导入Mybatis-->编写代码-->测试! 2.1.搭建环境 搭建数据库 CREATE DATABASE `mybatis`; u ...

  5. Mybatis入门及第一个Mybatis程序

    Mybatis笔记整理 所需要的基础知识 JDBC Mysql Java基础 Maven Junit 框架:是有配置文件的.最好的方式:看官网文档 1.简介 1.1.什么是MyBatis 简介 什么是 ...

  6. 由浅入深--第一个MyBatis程序

    话不多说,马上开始我们的第一个Mybatis程序: 第一个程序,当然要参考MyBatis的官网文档来搞,地址如下:https://mybatis.org/mybatis-3/zh/getting-st ...

  7. 使用idea创建第一个Mybatis程序及可能遇到的问题

    第一个Mybatis程序 思路:搭建环境->导入Mybatis->编写代码->执行 搭建环境 创建数据库 CREATE DATABASE `mybatis` USE `mybatis ...

  8. Mybatis【1】-- 第一个Mybatis程序

    1.框架是什么 框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架.前者是从应用方面而后者是从目的方面 ...

  9. MyBatis(一):第一个MyBatis程序

    本文是按照狂神说的教学视频学习的笔记,强力推荐,教学深入浅出1便就懂!b站搜索狂神说即可 https://space.bilibili.com/95256449?spm_id_from=333.788 ...

随机推荐

  1. mvc 5 的过滤器和webapi 过滤器 对应实现的action过滤器区别

     asp.net webapi  Action过滤器实现这个: #region 程序集 System.Web.Http, Version=5.2.3.0, Culture=neutral, Publi ...

  2. css3实现手机菜单展开收起动画

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  3. Jquery根据字段内容设置字段宽度

    来博客园很久了,初次写文章,新手,请大牛见谅! 前段时间遇到的问题,通过gridview后台动态生成table,列和行数量未知,要求根据每个单元格内容的多少,设置宽度,每一列选择本列最大的宽度. ta ...

  4. setNeedsDisplay、layoutSubViews

    UIView的setNeedsDisplay和setNeedsLayout方法.首先两个方法都是异步执行的.而setNeedsDisplay会调 用自动调用drawRect方法,这样可以拿到UIGra ...

  5. samba搭建

    在局域网下 samba可以代替ftp 用于传输 可以更高效的并行开发 安装samba sudo apt-get install samba samba-common 创建要共享的文件夹 mkdir / ...

  6. WCF入门教程系列一

    一.概述 Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分.由 .NE ...

  7. java 自动装箱、自动拆箱

    /** * @描述:自动装箱,自动拆箱 * @date 2017年1月10日下午1:30:01 * 结论:包装类的"=="运算在不遇到算术运算的情况下不会自动拆箱, * 以及他们的 ...

  8. C++服务器设计(四):超时管理机制设计

    前四章介绍了系统层的设计,从这一章开始进入服务层的设计. 连接断开 在常见的服务器场景中,客户端断开连接的方式为被动关闭.即作为客户端请求完服务器的服务后,选择主动关闭同服务器的连接.在服务器的角度看 ...

  9. Gengxin讲STL系列——Set

    本系列第二篇blog 第一篇写的心潮澎湃,结果写完一看,这都是些什么玩意= =| Set的中文名称是“集合”.集合,高一数学必修一课本给出的定义已经很明确了,简单来讲就是一个不含重复元素的空间(个人定 ...

  10. Reading source code

    software is a system built up of many parts rebuild that decomposition see the patterns in codes is ...