mybatis 依赖于jdbc_优于jdbc的mybatis框架入门

1.什么是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之间的映射关系

2.结构目录详情:

3.设置配置文件如下:

/p>

"http://mybatis.org/dtd/mybatis-3-config.dtd">

4.建立对应的实体类:

packagemybatis;public classCity {public intID;publicString Name;publicString CountryCode;publicString District;public intPopulation;public intgetID() {returnID;

}public void setID(intiD) {

ID=iD;

}publicString getName() {returnName;

}public voidsetName(String name) {

Name=name;

}publicString getCountryCode() {returnCountryCode;

}public voidsetCountryCode(String countryCode) {

CountryCode=countryCode;

}publicString getDistrict() {returnDistrict;

}public voidsetDistrict(String district) {

District=district;

}public intgetPopulation() {returnPopulation;

}public void setPopulation(intpopulation) {

Population=population;

}

@OverridepublicString toString() {return "World [ID=" + ID + ", Name=" + Name + ", CountryCode="

+ CountryCode + ", District=" + District + ", Population="

+ Population + "]";

}

}

5.配置CityMapper.xml:

/p>

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select * from city where CountryCode = #{CountryCode}

6.测试类进行测试:

packagemybatis;importjava.io.IOException;importjava.io.Reader;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;public classMybatisDemo {public static void main(String[] args) throwsIOException {//mybatis的配置文件

String resource = "mybatis/Configuration.xml";//使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)

Reader conf =Resources.getResourceAsReader(resource);//构建sqlSession的工厂

SqlSessionFactory sessionFactory = newSqlSessionFactoryBuilder().build(conf);//创建能执行映射文件中sql的sqlSession

SqlSession session =sessionFactory.openSession();/*** 映射sql的标识字符串,

* mybatis.CityMapper是CityMapper.xml文件中mapper标签的namespace属性的值,

* selectCityByCountryCode是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL*/String statement= "mybatis.CityMapper.selectCityByCountryCode";//映射sql的标识字符串//执行查询返回一个唯一City对象的sql

City wo = session.selectOne(statement, "ANT");

System.out.println(wo);

}

}

=====================================================================================================

使用接口:

新建一个接口类,CityInterface

packageinter;importmybatis.City;public interfaceCityInterface {public abstractCity selectCityByCountryCode(String CountryCode);

}

此时需要修改CityMapper.xml中的namespace的值,namespace的值必须为对应的接口类的全路径

select * from city where CountryCode = #{CountryCode}

修改测试类:

packagemybatis;importinter.CityInterface;importjava.io.IOException;importjava.io.Reader;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;public classMybatisDemo {public static void main(String[] args) throwsIOException {//mybatis的配置文件

String resource = "mybatis/Configuration.xml";//使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)

Reader conf =Resources.getResourceAsReader(resource);//构建sqlSession的工厂

SqlSessionFactory sessionFactory = newSqlSessionFactoryBuilder().build(conf);//创建能执行映射文件中sql的sqlSession

SqlSession session =sessionFactory.openSession();

CityInterface cityInter= session.getMapper(CityInterface.class);

City city= cityInter.selectCityByCountryCode("ANT");

System.out.println(city);

}

}

========================================================================================

实现数据的增删改查:

前面已经讲到用接口的方式编程。如果不一致就会出错,这一章主要在上一讲基于接口编程的基础上完成如下事情:

1. 用 mybatis 查询数据,包括列表

2. 用 mybatis 增加数据

3. 用 mybatis 更新数据.

4. 用 mybatis 删除数据.

查询数据,前面已经讲过简单的,主要看查询出列表,也就是返回list, 在我们这个例子中也就是 List , 这种方式返回数据,需要在CityMapper.xml 里面配置返回的类型 resultMap, 注意不是 resultType, 而这个resultMap 所对应的应该是我们自己配置的:

/p>

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

select * from city where CountryCode = #{CountryCode}

接口中增加方法返回类型是List的方法:

packageinter;importjava.util.List;importmybatis.City;public interfaceCityInterface {public abstract ListselectCityByCountryCode(String CountryCode);

}

修改测试类如下:

packagemybatis;importinter.CityInterface;importjava.io.IOException;importjava.io.Reader;importjava.util.List;importorg.apache.ibatis.io.Resources;importorg.apache.ibatis.session.SqlSession;importorg.apache.ibatis.session.SqlSessionFactory;importorg.apache.ibatis.session.SqlSessionFactoryBuilder;public classMybatisDemo {public static void main(String[] args) throwsIOException {//mybatis的配置文件

String resource = "mybatis/Configuration.xml";//使用类加载器加载mybatis的配置文件(它也加载关联的映射文件)

Reader conf =Resources.getResourceAsReader(resource);//构建sqlSession的工厂

SqlSessionFactory sessionFactory = newSqlSessionFactoryBuilder().build(conf);//创建能执行映射文件中sql的sqlSession

SqlSession session =sessionFactory.openSession();

CityInterface cityInter= session.getMapper(CityInterface.class);

List city = cityInter.selectCityByCountryCode("AFG");//System.out.println(city.get(0));//System.out.println(city.get(1));//System.out.println(city.get(2));

for(City c : city){

System.out.println(c);

}

}

}

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

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

相关文章

多维度创新打造领先阿里云技术生态

10月26日,2018中国计算机大会上举办了主题是“云计算生态与发展”的技术论坛。论坛上,阿里云技术战略架构师陈绪博士从构建目标、构建基石、构建要点三个方面详细陈述了阿里云开放的技术生态。目前阿里云正在全力打造一个由阿里云引导、驱动、赋能的多赢…

Facebook陷入史上最大危机;华为5G设备欧洲大卖,美国指责欧盟;红帽宣布OpenShift可用于AWS中国……...

关注并标星星CSDN云计算 速递、最新、绝对有料。这里有企业新动、这里有业界要闻,打起十二分精神,紧跟fashion你可以的!每周两次,打卡即read更快、更全了解泛云圈精彩newsgo go go新加坡加入微信计划 (图片来源网络&am…

计算机专业课程群建设,计算机科学与技术专业课程群建设的研究与实践

(内蒙古科技大学 信息工程学院,内蒙古 包头 014010)摘要:课程群建设是近年来高等院校课程建设实践中出现的一项新的课程开发技术,以本计算机专业课程群建设实践为背景,阐述了课程群建设的总体原则,构建了计算机专业课程群体系。关键词:计算机科学与技术专业;课程群;课程建设中图…

阿里云高级总监谈超大规模超高性能分布式快存储系统

新型硬件(如NVRAM、RDMA、GPU/TPU等)及其构建的异构复杂环境,与既有硬件环境的巨大差异,导致传统的算法、数据结构甚至是涉及原则和经验法则等难以为继,对计算智能与大数据处理带来新的挑战和机遇。 10月27日下午&…

git push -u origin master和git push 远程主机名 本地分支名:远程分支名作用

git push git push命令用于将本地分支的更新&#xff0c;推送到远程主机。它的格式与git pull命令相仿。 $ git push <远程主机名> <本地分支名>:<远程分支名>注意&#xff1a;这里的:前后是必须没有空格的。 注意&#xff0c;分支推送顺序的写法是<来源…

最新量子通信芯片曝光!大小仅为现有装置的千分之一

近日&#xff0c;新加坡南洋理工大学&#xff08;NTU-Singapore&#xff09;的Liu Ai Qun教授和Kwek Leong Chuan副教授领导的研究小组在《自然光子学》发表一项令人吃惊的研究成果&#xff1a;他们研究出一种量子通信芯片&#xff0c;大小约为3mm&#xff0c;其体积是目前量子…

如何提高阿里云上应用的可用性(一)

如今&#xff0c;开发并上线一款应用十分方便。因为云计算提供了从最基础的计算资源如服务器网络、数据库服务、中间件PaaS平台到各种应用支撑的云管理服务&#xff0c;同时开源社区的迅猛发展也提供了从数据库、缓存到应用全生命流程中各种必须的组件&#xff0c;所以越来越多…

catalog英文翻译_“目录”的英文翻译是“catalogquot;还是quot;contentsquot;

都是正确的&#xff0c;使用方法不同。1、catalog常用在说明书和产品目录中。解析&#xff1a;catalog英 [ˈktəlɒɡ]美 [ˈktəlɔːɡ] n.目录&#xff0c;一览表&#xff1b;系列&#xff1b;种类&#xff1b;产品样本。v.为…编目录&#xff0c;登记分类&#xff1b;记载…

运营商服务器系统,浪潮服务器助力运营商三大支撑系统上云

【IT168 资讯】继浙江移动、广东移动、福建电信业务系统云化应用改造项目后&#xff0c;浪潮服务器再次中标河南某运营商云资源池项目&#xff0c;中标金额达三千多万。三百多台浪潮双路、四路服务器用于支撑该运营商的BOSS计费系统、CRM系统、经营分析系统、网管应用系统、OA、…

查看git历史记录

查看git历史记录 git log 查看git历史记录简约一条 git log --oneline 查看git历史记录简约一条图形化 git log --oneline --graph 查看git所有分支提交的历史记录简约一条图形化 git log --oneline --all --graph 查看git所有分支最新的4次提交的历史记录简约一条图形化 git …

如何提高阿里云上应用的可用性(二)

在单体应用时代&#xff0c;最大的问题是如何解决数据库瓶颈&#xff0c;而微服务之下&#xff0c;一个大应用被拆分成了几十个甚至上百个微服务&#xff0c;数据访问的压力被传导到了服务之间的网络&#xff0c;服务强弱依赖&#xff0c;服务雪崩等各种问题随之而来&#xff0…

双11终于来了,你盖楼了吗?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | CDA数据分析师责编 | 阿秃双11就要到了&#xff0c;今天就带大家解读一下&#xff0c;在这场全面购物节背后都有哪些意想不到的有趣数据。一年一度的购物狂欢节双11又要到了&#xff0c;从2009年双11的诞生到今年&#xff0c…

怎样修改当前分支最新一次提交的message信息?

怎样修改当前分支最新一次提交的message信息&#xff1f; git commit --amend esc &#xff1a;wq

汉字转html实体符号js_html实体编码遇上js代码

单双引号在js代码中在js中单、双引号引起来的是字符串&#xff0c;如果我们要在字符串中使用单、双引号&#xff0c;需要反斜杠进行转义let struser\s name;// orlet str" users name";// orlet str"she said:\"...\".";如果在字符串中输出反斜杠…

Hystrix之外健壮微服务的新选择:Sentinel 发布首个生产版本

Sentinel 阿里中间件团队开源的&#xff0c;面向分布式服务架构的轻量级流量控制框架&#xff0c;主要以流量为切入点&#xff0c;从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。 近日&#xff0c;阿里中间件开源组件Sentinel 发布首个官方推荐可生…

服务器系统功能描述,Hadoop mapreduce核心功能描述

在任务执行期间&#xff0c;应用程序在写文件时可以利用这个特性&#xff0c;比如 通过 FileOutputFormat.getWorkOutputPath()获得${mapred.work.output.dir}目录&#xff0c; 并在其下创建任意任务执行时所需的side-file&#xff0c;框架在任务尝试成功时会马上移动这些文件&…

怎样修改老旧commit的message信息?

找到操作提交记录的父提交id&#xff0c;也可以理解为上一次提交记录 git rebase -i <父commitid> 只修该提交信息用把pick更新为r&#xff0c;然后在git弹出的命令窗口中&#xff0c; 修改提交记录信息&#xff0c;最后保存退出即可

腾讯Techo开发者大会揭晓云存储发展趋向:高性能、高可用、高性价比

产业数字化转型过程中产生着比过去任何一个时代都多的数据。在这样的背景下&#xff0c;数据存储技术应该怎么发展&#xff1f;11月7日&#xff0c;在腾讯Techo开发者大会上&#xff0c;来自科研领域的专家和腾讯云存储业务的工程师们共同揭开了云存储的发展趋势。 据IDC预测&…

python中imread导入失败_ImportError:无法导入加载图像文件所需的Python Imaging Library(PIL)...

我正在尝试在facemorpher 1.0.1 python包中运行average.py程序.我创建了一个虚拟环境,该环境中安装了带有自制软件的openCV,安装在自制软件中的python 2.7和可执行框架python,它们在虚拟环境cv中构建了python的框架.运行平均程序当前给我这个输出.(cv) Francess-MacBook-Pro-2:…

java 计算机开始时间,关于计算Java程序运行时间

第一种是以毫秒为单位计算的。Java代码//伪代码long startTimeSystem.currentTimeMillis(); //获取开始时间doSomeThing(); //测试的代码段long endTimeSystem.currentTimeMillis(); //获取结束时间System.out.println("程序运行时间&#xff1a; "(end-start)&qu…