MyBatis入门示例
说明:
1,本文采用的Mybatis框架版本为: mybatis-3.0.4.jar
2, 以持久化一个简单的User bean为例
User实体类的代码如下:
- package bean;
- public class User {
- private String name;
- private Integer age;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Integer getAge() {
- return age;
- }
- public void setAge(Integer age) {
- this.age = age;
- }
- public User(String name, Integer age) {
- super();
- this.name = name;
- this.age = age;
- }
- public User() {
- super();
- } //必须要有这个无参构造方法,不然根据UserMapper.xml中的配置,在查询数据库时,将不能反射构造出User实例
- }
User实体的映射器取名为UserMapper(接口),其代码如下
- package Mapper;
- import bean.User;
- public interface UserMapper {
- public void insertUser(User user);
- public User getUser(String name);
- }
注意,该接口类似于Hibernate中的DAO层接口,唯一不同的是,MyBatis中,只声明该接口就可以,不需要去实现.
UserMapper映射器对应的配置文件如下(相当于Hibernate中的User.hbm.xml,当然这里面不是属性映射字段,而是直接是映射器中各种方法对应的sql语句):
- <?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="Mapper.UserMapper">
- <!-- 这里namespace必须是UserMapper接口的路径,不然要运行的时候要报错 “is not known to the MapperRegistry”-->
- <insert id="insertUser" parameterType="User">
- insert into vincent_user(name,age) values(#{name},#{age})
- <!-- 这里sql结尾不能加分号,否则报“ORA-00911”的错误 -->
- </insert>
- <!-- 这里的id必须和UserMapper接口中的接口方法名相同,不然运行的时候也要报错 -->
- <select id="getUser" resultType="User" parameterType="java.lang.String">
- select * from vincent_user where name=#{name}
- </select>
- </mapper>
MyBatis的配置文件这里取名为mybatis-config.xml其配置代码如下(相当与Hibernate的hibernate.cfg.xml):
- <?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>
- <settings>
- <!-- changes from the defaults for testing -->
- <setting name="cacheEnabled" value="false" />
- <setting name="useGeneratedKeys" value="true" />
- <setting name="defaultExecutorType" value="REUSE" />
- </settings>
- <typeAliases>
- <typeAlias alias="User" type="bean.User"/>
- </typeAliases>
- <environments default="development">
- <environment id="development">
- <transactionManager type="jdbc"/>
- <dataSource type="POOLED">
- <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>
- <property name="url" value="jdbc:oracle:thin:@192.168.56.201:1521:system"/>
- <property name="username" value="vincent"/>
- <property name="password" value="1234"/>
- </dataSource>
- </environment>
- </environments>
- <mappers>
- <mapper resource="resource/UserMapper.xml" />
- </mappers>
- </configuration>
加载配置文件得到sqlSessionFactory的工具类
- package Util;
- import java.io.IOException;
- import java.io.Reader;
- import org.apache.ibatis.io.Resources;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.apache.ibatis.session.SqlSessionFactoryBuilder;
- public class MyBatisUtil {
- private final static SqlSessionFactory sqlSessionFactory;
- static {
- String resource = "resource/mybatis-config.xml";
- Reader reader = null;
- try {
- reader = Resources.getResourceAsReader(resource);
- } catch (IOException e) {
- System.out.println(e.getMessage());
- }
- sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
- }
- public static SqlSessionFactory getSqlSessionFactory() {
- return sqlSessionFactory;
- }
- }
测试代码如下:
- package TestMapper;
- import org.apache.ibatis.session.SqlSession;
- import org.apache.ibatis.session.SqlSessionFactory;
- import org.junit.Test;
- public class TestMapper {
- static SqlSessionFactory sqlSessionFactory = null;
- static {
- sqlSessionFactory = MyBatisUtil.getSqlSessionFactory();
- }
- @Test
- public void testAdd() {
- SqlSession sqlSession = sqlSessionFactory.openSession();
- try {
- UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
- User user = new User("tom",new Integer(5));
- userMapper.insertUser(user);
- sqlSession.commit();//这里一定要提交,不然数据进不去数据库中
- } finally {
- sqlSession.close();
- }
- }
- @Test
- public void getUser() {
- SqlSession sqlSession = sqlSessionFactory.openSession();
- try {
- UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
- User user = userMapper.getUser("jun");
- System.out.println("name: "+user.getName()+"|age: "+user.getAge());
- } finally {
- sqlSession.close();
- }
- }
- }
转载于:https://www.cnblogs.com/he-blog/p/3419042.html
MyBatis入门示例相关推荐
- Spring Boot Mybatis入门示例
Spring Boot Mybatis 入门示例 基于Spring Boot 2.3.4,Junit5 步骤说明 整个工程的最终目录结构如下,添加文件或者新建的目录的参考: └─src├─ma ...
- 后台(35)——MyBatis入门示例
探索Android软键盘的疑难杂症 深入探讨Android异步精髓Handler 详解Android主流框架不可或缺的基石 站在源码的肩膀上全解Scroller工作机制 Android多分辨率适配框架 ...
- spring boot 转xml格式报错解决方法_芋道 Spring Boot MyBatis 入门(一)之 MyBatis + XML...
摘要: 原创出处 http://www.iocoder.cn/Spring-Boot/MyBatis/「芋道源码」欢迎转载,保留摘要,谢谢! 1. 概述 2. MyBatis + XML 2.1 引入 ...
- mybatis入门(一)之基础安装
转载自 mybatis入门 安装 要使用 MyBatis, 只需将 mybatis-x.x.x.jar 文件置于 classpath 中即可. 如果使用 Maven 来构建项目,则需将下面的 dep ...
- MyBatis由浅入深学习总结之一:MyBatis入门案例
一.MyBatis简介 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名 ...
- Java日志框架 -- 日志框架介绍、日志门面技术、JUL日志(JUL架构、JUL入门示例、JUL日志级别、JUL日志的配置文件)
1. 日志的概念 日志文件是用于记录系统操作事件的文件集合,可分为事件日志和消息日志.具有处理历史数据.诊断问题的追踪以及理解系统的活动等重要作用. 2. Java日志框架 问题: 控制日志输出的内容 ...
- mybatis入门学习之环境的搭建——helloworld
Mybatis框架环境的搭建 首先,我是一名走java后端的大二菜鸟,我写博客一方面是用来记录我学习中遇到的问题,另一方面是希望和更多的人分享经验.如果我写的内容有不严谨的地方,还请大佬们纠正一下. ...
- Camunda入门(四) - 流程应用(支付流程)入门示例
参考文章:Camunda入门(四) - 流程应用(支付流程)入门示例_罗小爬EX的博客-CSDN博客_camunda入门 1. 支付流程 - 场景设定 为了快速上手Camunda,结合Camunda官 ...
- MyBatis入门学习教程
MyBatis入门学习教程 1. MyBatis 原生使用入门篇 1.1 什么是MyBatis? 1.2 原生使用安装方法 1.3 使用示例 1.3.1 创建一个学习项目 1.3.1 添加依赖 1.3 ...
最新文章
- 使用树形结构保存实体
- java 取绝对值_Java实现一致性哈希算法,并搭建环境测试其负载均衡特性
- 程序中保留一个Dump
- linux 定时清理tomcat日志
- 封装、继承、多态的理解
- 人生有五不:不等、不管、不看、不做、不给
- post工具_GitHub CLI 命令行工具使用
- 现在开始全职跑滴滴,你怎么看?
- 如何设置mysql的运行目录_如何修改mysql数据库文件的路径 | 学步园
- Win_server_2012如何将“计算机”图标放在桌面
- Linux-mysql备份
- iso 9000下载_ISO 9000 | 软件工程
- usb无线网卡安装在服务器上,USB无线网卡怎么用?USB无线网卡如何安装?
- EMC VMAX存储的内存布局
- 三维GIS视频融合监控平台
- 易基因|ChIP-seq分析方法:实用的工作流程和高级应用
- 前端开发的辛酸史(2)之织梦教程
- 线上教育网站源码如何搭建网校平台,需要注意什么?
- 电影《诛仙Ⅰ》:“IP加流量的话”现在还可以行得通吗
- Error: Message failed: 554 5.2.0 STOREDRV.Submission.Exception:OutboundSpamException;
热门文章
- Java Arrays.Sort方法重写
- php7-fpm webtatic,如何在 CentOS 7 中使用 Nginx 和 PHP7-FPM 安装 Nextcloud
- liunx上安装nacos
- python定义浮点数数组_tensorflow之tf.record实现存浮点数数组
- Swift3的playground中对UI直接测试支持的改变
- java不同的数据源如何处理_java – 如何在不同的数据源上创建两个类之间的关系?...
- 清华大佬手把手教你使用Python进行数据分析和可视化
- 剑灵选区界面一直正在连接服务器,如何选择服务器 选择困难症的指南
- 云服务器重装系统后卡顿,低延迟云服务器发生卡顿丢包检测方法
- C语言在一个有序数组里插入一个元素,使其成为一个新的有序数组