java mybatis 教程_(整理)MyBatis入门教程(一)

本文转载:

本人文笔不行,根据上面博客内容引导,自己整理了一些东西

首先给大家推荐几个网页:

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

da3ef47e9ac92943a7c60cf9b53203a4.png

一、理解什么是MyBatis?

MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。 MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索。MyBatis 可以使用简单的XML 或注解用于配置和原始映射,将接口和 Java 的 POJO( Plain Old Java Objects,普通的Java 对象)映射成数据库中的记录.

1)MyBATIS 目前提供了三种语言实现的版本,包括:Java、.NET以及Ruby。(我主要学习java,就讲java的使用)

2)它提供的持久层框架包括SQL Maps和Data Access Objects(DAO)。

3)mybatis与hibernate的对比?

mybatis提供一种“半自动化”的ORM实现。

这里的“半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化”ORM实现而言,“全自动”ORM实现了POJO和数据库表之间的映射,以及 SQL 的自动生成和执行。

而mybatis的着力点,则在于POJO与SQL之间的映射关系。

二、简单例子(快速入门)

1)首先建立项目java web

996b7dc0899c9f4ad336585b51ddef0a.png

2)配置mybatis所需的jar包,pom.xml

mysql

mysql-connector-java

5.1.35

org.mybatis

mybatis

3.2.8

org.slf4j

slf4j-api

1.7.7

ch.qos.logback

logback-core

1.1.3

ch.qos.logback

logback-access

1.1.3

ch.qos.logback

logback-classic

1.1.3

3)创建数据库数据(mybatis),创建表(t_user)

73ee1bab66b46d87aa0b2a45bb20f9c6.png

CREATE TABLE `t_user` (

`id` int(11) NOT NULL auto_increment,

`username` varchar(20) default NULL,

`password` varchar(20) default NULL,

`account` double(10,2) default NULL,

PRIMARY KEY  (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8

4)mysql驱动配置文件mysql.properties

jdbc.driver=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatis

jdbc.username=admin

jdbc.password=123456

5)添加mybatis配置文件mybatis.cfg.xml

6bcc692db5b555ed6f50d5dce8cda0c6.png

6)创建对应的实体对象

7)创建方法接口UserMapper.java和定义操作t_user表的sql映射文件UserMapper.xml

提供简单的增删改查数据信息。

packagecom.wenyin.mybatis.mapper;importjava.util.List;importcom.wenyin.mybatis.beans.UserBean;public interfaceUserMapper {/*** 新增用戶

*@paramuser

*@return*@throwsException*/

public int insertUser(UserBean user) throwsException;/*** 修改用戶

*@paramuser

*@paramid

*@return*@throwsException*/

public int updateUser (UserBean user,int id) throwsException;/*** 刪除用戶

*@paramid

*@return*@throwsException*/

public int deleteUser(int id) throwsException;/*** 根据id查询用户信息

*@paramid

*@return*@throwsException*/

public UserBean selectUserById(int id) throwsException;/*** 查询所有的用户信息

*@return*@throwsException*/

public List selectAllUser() throwsException;

}

b698d8baa718bdac5117496bd91c0514.png

UserMapper.xml

insert into t_user (username,password,account) values (#{username},#{password},#{account})

update t_user set username=#{username},password=#{password},account=#{account} where id=#{id}

delete from t_user where id=#{id}

select * from t_user where id=#{id}

select * from t_user

这时需要为mybatis.cfg.xml里注册UserMapper.xml文件。

参照第5)步骤

8)需要建立一个工具类文件

packagecom.wenyin.mybatis.tools;importjava.io.Reader;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;public classDBTools {public staticSqlSessionFactory sessionFactory;static{try{//使用MyBatis提供的Resources类加载mybatis的配置文件

Reader reader = Resources.getResourceAsReader("mybatis.cfg.xml");//构建sqlSession的工厂

sessionFactory = newSqlSessionFactoryBuilder().build(reader);

}catch(Exception e) {

e.printStackTrace();

}

}//创建能执行映射文件中sql的sqlSession

public staticSqlSession getSession(){returnsessionFactory.openSession();

}

}

9)写个测试UserService.java

packagecom.wenyin.mybatis.service;importjava.util.List;importorg.apache.ibatis.session.SqlSession;importorg.slf4j.Logger;importorg.slf4j.LoggerFactory;importcom.wenyin.mybatis.beans.UserBean;importcom.wenyin.mybatis.mapper.UserMapper;importcom.wenyin.mybatis.tools.DBTools;public classUserService {private static Logger logger = LoggerFactory.getLogger(UserService.class);public static voidmain(String[] args) {

insertUser();//deleteUser(1);//selectUserById(2);//selectAllUser();

}/*** 新增用户*/

private static booleaninsertUser(){

SqlSession session=DBTools.getSession();

UserMapper mapper= session.getMapper(UserMapper.class);

UserBean user= new UserBean("test01", "123456", 7000.0);try{int index=mapper.insertUser(user);boolean bool=index>0?true:false;

logger.error("新增用户user对象:{},操作状态:{}",newObject[]{user,bool});

session.commit();returnbool;

}catch(Exception e) {

e.printStackTrace();

session.rollback();return false;

}finally{

session.close();

}

}/*** 删除用户

*@paramid 用户ID*/

private static boolean deleteUser(intid){

SqlSession session=DBTools.getSession();

UserMapper mapper=session.getMapper(UserMapper.class);try{int index=mapper.deleteUser(id);boolean bool=index>0?true:false;

logger.debug("根据用户id:{},操作状态{}",newObject[]{id,bool});

session.commit();returnbool;

}catch(Exception e) {

e.printStackTrace();

session.rollback();return false;

}finally{

session.close();

}

}/*** 根据id查询用户

*@paramid*/

private static void selectUserById(intid){

SqlSession session=DBTools.getSession();

UserMapper mapper=session.getMapper(UserMapper.class);try{

UserBean user=mapper.selectUserById(id);

logger.debug("根据用户Id:{},查询用户信息:{}",newObject[]{id,user});

session.commit();

}catch(Exception e) {

e.printStackTrace();

session.rollback();

}finally{

session.close();

}

}/*** 查询所有的用户*/

private static voidselectAllUser(){

SqlSession session=DBTools.getSession();

UserMapper mapper=session.getMapper(UserMapper.class);try{

List user=mapper.selectAllUser();

logger.debug("获取所用的用户:{}",user);

session.commit();

}catch(Exception e) {

e.printStackTrace();

session.rollback();

}finally{

session.close();

}

}

}

新增运行结果:

db97d1f8b2165ecbe21fc75cf2a931c9.png

如果返回Map

select username,id from

t_user where

id=#{id}

返回List>

SELECT * FROM t_user

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340855.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2020版北大中文核心期刊目录_收藏备用最新版:《中文核心期刊要目总览》北大中文核心期刊目录...

《中文核心期刊要目总览》是学术界对某类期刊的定义,一种期刊等级的划分。它的对象是,中文学术期刊,是根据期刊影响因子等诸多因素所划分的期刊。中文核心期刊是北京大学图书馆联合众多学术界权威专家鉴定,目前受到了学术界的广泛…

java中多个输入框搜索_如何在一个搜索框中输入多个字段的值进行查询?

搜索export default {data() {return {input: ,//用来接受input框的值name:,// 用来存储foreach的对应的值id:,// 用来存储foreach的对应的值dq:// 用来存储foreach的对应的值}},methods:{submit(){console.log(this.input);// 打印let str this.input;// 声明变量接受input的…

fedora如何隐藏顶部状态栏_藏在 iOS 13 里的 9 个隐藏小技巧

正文共:1797字 10图1.从控制中心直接选择无线网络和蓝牙配件苹果首次在 iOS 7 中加入了控制中心,允许用户进行一些快速操作,例如打开/关闭飞行模式、打开/关闭蜂窝网络、打开/关闭 Wi-Fi 等。但很多控制都只停留在一级菜单,你只能…

java的封装性的优点_18、Java的三大特性之封装

Java的三大特性java是一个面向对象的语言,所以java也有面向对象语言的三大特性:继承,封装,多态,任何一个java项目,都会用到这三种特性,所以掌握好这三大特性非常的重要。封装我们为什么要使用封…

groovy 字符串截取最后一个_Java基础篇——字符串详解

字符串的声明字符串是内存中连续排列的0个或多个字符。不变字符串是指字符串一旦创建,其内容就不能改变,Java中使用String类来处理不变字符串,在对String类的实例进行查找、比较、拼接等操作时,既不能输入新字符,又不能…

java中链式调用_Java及Android中常用链式调用写法简单示例

本文实例讲述了Java及Android中常用链式调用写法。分享给大家供大家参考,具体如下:最近发现,目前大火的许多开源框架中,大多都使用了一种"(方法).(方法).(方法)"的形式进行调用,最典型的就是RxJava。android…

C什么k什么_K线图基础知识丨什么是K线散兵坑形态?K线散兵坑形态的操作与案例详解...

本文总共999字,预计阅读需要3分钟今天我们给大家带来的是K线散兵坑形态,那么K线散兵坑形态应该怎么来操作呢?今天我们就结合相应的实战案例来为大家讲解一下吧。K线散兵坑形态的简介散兵坑是指在股价缓慢上涨过程中.成交量也逐渐放大&#xf…

support v4官方下载_掌心长兴客户端下载-掌心长兴ap下载v4.1.4 安卓官方版

掌心长兴app是一款为广大用户开发的新闻资讯软件。在这里用户可以清晰的了解今日热点新闻,最新新闻直播电台应有尽有!让你全方面了解周边新鲜事!还有各种常用功能的代办查询服务。有需要的用户,欢迎现在下载体验哦掌心长兴客户端介…

javafx 调用java_Java验证(javafx)

javafx 调用java验证是核心javafx框架所缺少的一件事。 为了弥补这一空白, controlsfx中已经存在一个第三方验证库 。 但是,我有一个问题:它不是在考虑FXML的情况下创建的。 这并不是说它不是一个很好的库,只是错过了这个细节&…

win10分辨率不能调整_Win10系统分辨率不能修改怎么办?屏幕分辨率的调节方法...

Win10系统电脑屏幕分辨率无法调节怎么办?电脑屏幕分辨率不能修改怎么办?近日有很多用户询问电脑显示器分辨率不能修改的问题,下面就给大家分享解决方法。解决方法:1、在win10系统桌面空白处单击鼠标右键,在弹出的菜单中…

笔记本电脑电源已接通未充电_dell xps15 电源已接通 未充电 维修方法

(去年写的文章,在知乎也存一份)网上类似的文章很多,这里总结一下,这个问题按照严重程度可以分为四个层次:电源计划问题,大部分百度出来说的都是这个,实际上这个问题 等于没有问题。改…

mysql bc_正则表达式——MySQL搜索过滤

正则表达式介绍在数据库的数据过滤过程中只用WHERE子句和LIKE操作符都是对于已知值进行的不管是匹配一个还是多个值,测试大于还是小于已知值,或者检查某个范围的值,都是使用已知的值当然MySQL语句也提供了通配符百分号(%)和下划线(_)来匹配多…

everything安装版和便携版有什么区别_A2奶粉内幕:国行版和澳洲版有什么区别 贵的不一定好!...

点击上方蓝字 关注我们申明:此文章来自第三方平台,绝无倾向性诱导。二桐粑粑转载分享。A2是全球首款添加了“A2-β酪蛋白”的奶粉,由新西兰A2公司于2013年推出,这款奶粉在澳洲一上架,就被妈妈们一扫而空。之后A2公司针…

java 什么时候用递归_如果要用Java实现算法,一定慎用递归

现象 :递归是我们很经典的一种算法实现,可以很好的描述一个算法的原理!对于算法的描述、表现和代码结构理解上,递归都是不错的选择!但是本文想说的是java实现一个递归算法的时候尽量不要用递归实现,而是转换…

excel分两个独立窗口_Excel2010 多个独立窗口,解决单窗口无法显示多个文件的问题...

当我们需要编辑多个excel的时候,就会发现一个问题,Excel不能一个窗口下显示多个文档,每次编辑都进行切换就太麻烦了,那如何能解决这个问题呢?接下来跟我一起看看吧!首先在开始菜单输入regedit.exe命令&…

excel冻结窗口_excel怎么冻结窗口?excel冻结窗口怎么设置?

excel冻结行或列的技巧教程:一、冻结第一列1.选择 视图 > 冻结窗格 > 冻结第一列。2.列A和列B之间出现的细线表明第一列已冻结。二、冻结前两列1.选择第三列。2.选择 查看 > 冻结窗格 > 冻结窗格。三、冻结列和行1.选择要在滚动时保持可见的行下方和列右…

web service接口_win7 添加环回网卡+H3C 模拟器 防火墙开启Web功能

1、按下win R键,在其中输入:hdwwiz,然后点击“确定”或者按回车键,打开“添加硬件”对话框。2、看到如下界面时,选择“网络适配器”(如下图所示), 在接着出现的界面中,左方“厂商”一栏里选择“…

java 实现nfa的化简_DFA与NFA的等价性,DFA化简

等价性对于每个NFA M存在一个DFA M’,使得L(M)L(M’)--------等价性证明,NFA的确定化假定NFA M,我们对M的状态转换图进行以下改造:解决初始状态唯一性:引进新的初态结点X和终态结点Y,X,Y∉S,从X…

eclipse查看git地址_gitamp;github的入门实战

一、Git概述(1)定义Git是目前世界上最先进的分布式版本控制系统。(2)能干什么?解决冲突、管理权限、代码备份、协同开发、版本还原、历史追查、版本记录、分支管理、代码审查(3)集中管理型版本管…

使用Apache Kafka作为消息系统的发布-订阅通信中的微服务,并通过集成测试进行了验证...

发布-订阅消息系统在任何企业体系结构中都起着重要作用,因为它可以实现可靠的集成而无需紧密耦合应用程序。 在解耦的系统之间共享数据的能力并不是一个容易解决的问题。 考虑一个企业,其中具有使用不同语言和平台独立构建的多个应用程序。 它需要以响应…