- 浏览: 53160 次
文章分类
最新评论
ORM这个词对于很多做J2EE开发的人来讲,并不陌生,如Hibernate,但是在使用Hibernate时,你会有一个很大的感受是什么呢?那就是关联映射这个东东不太好弄,还有级联的设置,导致在公司中,其实很用Hibernate并不是太多,所以才有Mybatis这个半ORM框架,何为半ORM框架,就是它一半是使用sql来写的,但是最终的结果是对象,这个神奇吧。而且不像网上一大堆例子,Mybatis中写了一些resutlMap之类的东东,其实,只要你sql写对了,直接可以用在Mybatis上面,根本不用写其它的内容。下面以一个例子来讲解关联的例子,我有学生表(student)和课程表(course)。
1.实体类
Student.java:对应于数据库表的实体类
Course.java:对应数据库表的实体类
SC.java:对应于一个关联查询结果类,在后面的查询语句中体现出来
2.conf.xml
3.studentMapper.xml
4.测试
1.实体类
Student.java:对应于数据库表的实体类
public class Student { private int id; private String student_name; private int course_id; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getStudent_name() { return student_name; } public void setStudent_name(String student_name) { this.student_name = student_name; } public int getCourse_id() { return course_id; } public void setCourse_id(int course_id) { this.course_id = course_id; } @Override public String toString() { // TODO Auto-generated method stub return this.id+","+this.student_name+","+this.course_id; } }
Course.java:对应数据库表的实体类
public class Course { private int id; private String course_name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getCourse_name() { return course_name; } public void setCourse_name(String course_name) { this.course_name = course_name; } @Override public String toString() { // TODO Auto-generated method stub return this.id+","+this.course_name; } }
SC.java:对应于一个关联查询结果类,在后面的查询语句中体现出来
public class SC { private int id; private String student_name; private String course_name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getStudent_name() { return student_name; } public void setStudent_name(String student_name) { this.student_name = student_name; } public String getCourse_name() { return course_name; } public void setCourse_name(String course_name) { this.course_name = course_name; } @Override public String toString() { // TODO Auto-generated method stub return this.student_name+","+this.course_name; } }
2.conf.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> <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/gaofulai" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments> <mappers> <!-- 注册userMapper.xml文件, userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml--> <mapper resource="com/mapper/studentMapper.xml"/> <mapper resource="com/mapper/courseMapper.xml"/> </mappers> </configuration>
3.studentMapper.xml
<?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.mapper.studentMapper"> <select id="getStudent" parameterType="int" resultType="com.domain.Student"> select * from student where id=#{id} </select> <select id="getStudentAndCourse" parameterType="int" resultType="com.domain.SC"> select s.id, s.student_name, c.course_name from student s, course c where s.course_id=c.id and s.id=#{id} </select> </mapper>
4.测试
public class Test { public static void main(String args[]){ String resource = "conf.xml"; InputStream is = Test.class.getClassLoader().getResourceAsStream(resource); //构建sqlSession的工厂 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is); SqlSession session = sessionFactory.openSession(); String statement = "com.mapper.studentMapper.getStudentAndCourse";//映射sql的标识字符串 //执行查询返回一个唯一学生-课程对象的sql SC sc = session.selectOne(statement, 1000); System.out.println(sc); } }
发表评论
-
Java IO 读文件的各种方法总结
2016-01-01 15:00 699IO分为字节流和字符流,字符就是简单的字符串存储,从理伦上讲, ... -
动态代理的应用
2015-12-22 17:30 733代理模式作为开发人员 ... -
Java Restful
2015-12-19 14:01 440对于两个系统之间交互信息,有两种常见的方式:webservic ... -
request.getInputStream() 只能读一次的解决方法
2015-12-17 12:17 2381我们知道request.getInputStream()只能读 ... -
java Hessian 版本冲突问题解决方法
2015-12-11 19:44 885今天在实际的项目发现了一个问题就是hessian的版本不兼容的 ... -
ThreadPoolExecutor参数讲解
2015-12-10 08:14 8181. 线程池可以节省创建多个线程带来的开销问题。 2. 线程 ... -
Java RSA 加密 解密 签名 验签
2015-12-09 10:01 61511. 加密的作用 1)明文变密文(你不知道密钥是很难解密的) ... -
Java Xstream xml 与bean之间的转换
2015-12-09 08:31 748xml文件如下: <mvc> & ... -
XPATH 解析XML
2015-12-09 08:28 4371. 表达式描述 nodename 选取此节点的所有子节 ... -
Java Dom4j 解析XML
2015-12-09 08:23 366Dom4j和JDom是很相似的,用起来十分方便。 XML文件 ... -
Java JDom 解析xml
2015-12-09 08:22 420JDOM在解析XML在代码量之上比之前的方法(DOM和SAX要 ... -
Java SAX 解析xml
2015-12-08 18:13 424在上一篇中http://gaofulai1988.iteye. ... -
Java XML解析系列
2015-12-08 18:00 766Java解析XML有多种方式,因此需要分为几个不同的系列来讲。 ... -
Java 背包算法计算从数组中找若干个数使其最接近某个数
2015-12-08 17:38 1992背包的算法的动态方式如下: f(i,w) = max{ f(i ... -
C3P0 连接分析
2015-12-01 19:05 896最近在看C3P0的原理,还是将C3P0的源码导入到Ecplis ... -
微信开发的原理
2015-11-30 10:10 1320微信在现在的生活中,扮演着举足轻重的角色,现在怎么东西都在微信 ... -
JAVA Timestamp 与Data的转化以及BigDecimal 保留两位小数
2015-11-27 14:47 17151. BigDecimal 保留两位小数 今天在项目中遇到这 ... -
java try catch finally return 继续
2015-11-27 13:45 405之前在博客中有一篇文章讨论过异常中return值的情况,有兴趣 ... -
Java JDBC executeBatch 批量操作
2015-11-27 08:05 1634对JDBC 的 CRUD操作,我相信对于每个开发人员来讲,是十 ... -
Java WeakHashMap 分析
2015-11-26 08:17 625昨天在我们的系统中看 ...
相关推荐
【狂神说java MyBatis 笔记】 MyBatis 是一个优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解...
1. Java Mybatis Generator, 自动根据数据库字段的注释,把注释的内容放到Entity的Swagger注释@ApiModel 和 @ApiModelProperty中 2. 如果碰到Mybatis xml文件格式错误,请到...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...
本项目"Java Mybatis Maven多线程处理百万数据修改的小工具"正是为了解决这样的问题而设计的。它利用Mybatis作为持久层框架,结合Java的多线程特性,实现了对大量数据进行高效修改的功能。 Mybatis是Java领域广泛...
JAVA MyBatis框架特点发展动态SQL MyBatis框架是基于Java的持久层框架,提供了SQL Maps和Data Access Objects(DAOs)来简化数据库访问的代码。MyBatis框架的发展历史可以追溯到2004年左右,当时它还是一个名为...
在Java开发领域,MyBatis是一个非常流行的持久层框架,它允许开发者将SQL语句直接集成到Java代码中,提供了一种更为灵活的数据库访问方式。这个"Java MyBatis - 实践学习案例.zip"文件显然包含了一系列关于如何使用...
Java MyBatis Plus 是一个基于 Java 的 MyBatis 框架扩展,它为开发者提供了更方便的数据操作接口和实体注解,简化了原本 MyBatis 的繁琐配置,提升了开发效率。这个自学笔记主要涵盖了 MyBatis Plus 的基础概念、...
Java医院预约挂号系统源码+数据库,基于Java Mybatis 框架 医院预约挂号系统是一种基于互联网的新型挂号系统。 用户可以在网上预约医院的专家门诊,免受排队之苦。 通过它简化就医环节,节约就医时间,提高就诊体验
java MyBatis基础教程,一二级缓存.zip
JavaSwing+MyBatis简单学生管理系统是一款基于Java桌面应用技术与持久层框架MyBatis构建的信息管理软件。这个系统的主要目标是实现对学生信息的有效存储、检索和管理,适用于教育机构或个人学习使用。开发环境为Java...
本项目为基于MyBatis-Plus框架的Java代码示例,共计包含342个文件,其中包含204个Java源文件、50个SQL脚本、46个XML配置文件、27个YAML文件、5个属性文件、5个Markdown文件和1个Git忽略文件。该源码旨在提供MyBatis-...
用mybatis-plus的自动生成器,我们一般只用到entity和mapperXML,其他mapper接口和service类都要自己写。 可以下载之后,根据自己表生成mapperXML,然后用全局替换来修改一些细节。
java开发中使用mybatis框架需要用到的独立jar包,java开发中使用mybatis框架需要用到的独立jar包,java开发中使用mybatis框架需要用到的独立jar包,java开发中使用mybatis框架需要用到的独立jar包,
MyBatis 是一款深受开发者喜爱的 Java 持久层框架,它简化了数据库操作,使得开发者能够更专注于 SQL 查询的编写,同时提供了强大的映射功能,将 SQL 语句与 Java 代码分离,增强了代码的可维护性。在本文中,我们将...
在IT行业中,MyBatis是一个广泛使用的持久层框架,它为Java开发者提供了强大的SQL映射功能,使得数据库操作更加便捷高效。本实践学习案例将深入探讨MyBatis的基本概念、核心特性以及如何与Java应用程序集成。 ...
Mybatis 是一个优秀的基于 Java 的持久层框架,它内部封装了 Jdbc,使开发者只需要关注 sql 语句本身,而不需要花费精力去处理加载驱动、创建连接、创建 statement 等繁杂的过程。Mybatis 通过 xml 或注解的方式将要...
Mybatis是Java中广泛使用的持久层框架,它源自Apache的开源项目iBatis,在2010年由Apache Software Foundation迁移到Google Code,并更名为MyBatis。此后,MyBatis在2013年11月迁移到了Github。Mybatis主要负责封装...
MyBatis是一个流行的Java持久层框架,它简化了与数据库之间的交互,允许开发者将SQL查询直接映射到Java对象。这个文档主要介绍了MyBatis框架的核心概念和基本使用步骤。 首先,MyBatis的配置文件分为两个部分:全局...
《Java开发之MyBatis实战教程》是一份深入解析MyBatis框架的综合教程,旨在帮助Java开发者更好地理解和运用MyBatis进行实际项目开发。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,避免...
MyBatis代码生成器是一款强大的开发工具,专为Java开发者设计,用于自动化生成MyBatis相关的Java实体类、Mapper接口及XML配置文件。这个工具极大地提高了开发效率,减少了手动编写这些重复性工作的时间,使开发者能...