- 浏览: 17641 次
- 性别:
文章分类
最新评论
MyBatis 是一个可以自定义SQL、存储过程和高级映射的持久层框架。MyBatis 摒除了大部分的JDBC代码、手工设置参数和结果集重获。MyBatis 只使用简单的XML 和注解来配置和映射基本数据类型、Map 接口和POJO 到数据库记录。相对hibernate“一站式”ORM解决方案而言,Mybatis 是一种“半自动化”的ORM实现。
orm工具的基本工作流程
无论是用过的hibernate,mybatis,你都可以看到他们有一个共同点:
1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.
2. 由sessionfactory 产生 session
3. 在session 中完成对数据的增删改查和事务提交等.
4. 在用完之后关闭session 。
MyBatis的简单入门
(一)需要的jar包,本测试用mysql所需要以下包
mybatis-3.2.2.jar(mybatis核心包)
mysql-connector-java-5.0.8-bin(mysql的工具包)
(二)创建一个java工程,把上面的jar添加入内,工程的结构如下
(三)添加Mybatis的配置文件mybatis-config.xml
(四)定义person表所对应的实体类,实体类中的属性命名与表字段命名保持一至,person的表结构如下图
(五)定义操作person表的sql映射文件personMapper.xml
(六)编写一个测试类
(七)接口方式编程
上面这种方式是用SqlSession实例来直接执行已映射的SQL语句:
session.selectOne("com.lql.study.model.personMapper.getPerson", 46)
其实还有更好的方法,使用合理描述参数和SQL语句返回值的接口,这样子更简单更安全,没有容易发生的字符串文字和转换的错误.下面是详细过程:
1.建立接口类 IPersonOption , 内容如下:
注意,这里面有一个方法名 getPerson必须与 PersonMapper.xml 里面配置的 select 的id 对应(<select id="getPerson")
2.修改PersonMapper.xml中的命名空间namespace使之指向接口
3.修改测试类
orm工具的基本工作流程
无论是用过的hibernate,mybatis,你都可以看到他们有一个共同点:
1. 从配置文件(通常是XML配置文件中)得到 sessionfactory.
2. 由sessionfactory 产生 session
3. 在session 中完成对数据的增删改查和事务提交等.
4. 在用完之后关闭session 。
MyBatis的简单入门
(一)需要的jar包,本测试用mysql所需要以下包
mybatis-3.2.2.jar(mybatis核心包)
mysql-connector-java-5.0.8-bin(mysql的工具包)
(二)创建一个java工程,把上面的jar添加入内,工程的结构如下
(三)添加Mybatis的配置文件mybatis-config.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://127.0.0.1/test?characterEncoding=utf8" /> <property name="username" value="root" /> <property name="password" value="123456" /> </dataSource> </environment> </environments> <mappers> <!-- 注册映射xml文件,personMapper.xml位于com.lql.study.model这个包下, 所以resource写成com.lql.study.model/personMapper.xml--> <mapper resource="com/lql/study/model/personMapper.xml"/> </mappers> </configuration>
(四)定义person表所对应的实体类,实体类中的属性命名与表字段命名保持一至,person的表结构如下图
package com.lql.study.model; import java.sql.Timestamp; import java.util.HashSet; import java.util.Set; public class Person { private Integer pid; private String name; private String sex; private Integer age; private String remark; private Timestamp createtime; // Constructors /** default constructor */ public Person() { } /** full constructor */ public Person(String name, String sex, Integer age, String remark, Timestamp createtime) { this.name = name; this.sex = sex; this.age = age; this.remark = remark; this.createtime = createtime; } // Property accessors public Integer getPid() { return this.pid; } public void setPid(Integer pid) { this.pid = pid; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public String getSex() { return this.sex; } public void setSex(String sex) { this.sex = sex; } public Integer getAge() { return this.age; } public void setAge(Integer age) { this.age = age; } public String getRemark() { return this.remark; } public void setRemark(String remark) { this.remark = remark; } public Timestamp getCreatetime() { return this.createtime; } public void setCreatetime(Timestamp createtime) { this.createtime = createtime; } }
(五)定义操作person表的sql映射文件personMapper.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"> <!-- 命名空间namespace:习惯上设置成包名+实体po映射文件名,这样就能够保证namespace的值是唯一的 例如namespace="com.lql.study.model.personMapper"就是com.lql.study.model(包名)+personMapper(personMapper.xml文件去除后缀) --> <!-- 根据id查询得到一个person对象--> <mapper namespace="com.lql.study.model.personMapper"> <!-- 在select标签中编写查询的SQL语句 id:select标签的唯一标识 parameterType:指明查询时使用的参数类型 resultType:指明查询返回的结果集类型 #{pid}:代表查询参数值 --> <select id="getPerson" parameterType="int" resultType="com.lql.study.model.Person"> select * from person where pid=#{pid} </select> </mapper>
(六)编写一个测试类
package com.lql.study.action; import java.io.IOException; import java.io.InputStream; import java.io.Reader; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import com.lql.study.model.Person; public class TestPerson { //mybatis的配置文件 private String resource = "mybatis-config.xml"; private SqlSessionFactory sessionFactory; public TestPerson() throws IOException { //使用MyBatis提供的Resources类加载mybatis的配置文件(它也加载关联的映射文件) Reader reader = Resources.getResourceAsReader(resource); //构建sqlSession的工厂 this.sessionFactory = new SqlSessionFactoryBuilder().build(reader); } public Person selectById(int pid) { //创建能执行映射文件中sql的sqlSession SqlSession session = sessionFactory.openSession(); /*** 映射sql的标识字符串, * * com.lql.study.model.personMapper是personMapper.xml文件中mapper标签的namespace属性的值, * getPerson是select标签的id属性值,通过select标签的id属性值就可以找到要执行的SQL * */ String statement = "com.lql.study.model.personMapper.getPerson";//映射sql的标识字符串由映射文件里的namespace+select id组成 执行查询返回一个唯一person对象的sql //selectOnet顾名思义是查询单个对象,pid是输入参数,例如查询person中pid=46的记录 Person person1 = session.selectOne(statement,pid); System.out.println(person1.getName()); session.close(); return person1; } public static void main(String[] args) { try { TestPerson test= new TestPerson(); test.selectById(46); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
(七)接口方式编程
上面这种方式是用SqlSession实例来直接执行已映射的SQL语句:
session.selectOne("com.lql.study.model.personMapper.getPerson", 46)
其实还有更好的方法,使用合理描述参数和SQL语句返回值的接口,这样子更简单更安全,没有容易发生的字符串文字和转换的错误.下面是详细过程:
1.建立接口类 IPersonOption , 内容如下:
package com.lql.study.action; import com.lql.study.model.Person; public interface IPersonOption { public Person getPerson(int pid); }
注意,这里面有一个方法名 getPerson必须与 PersonMapper.xml 里面配置的 select 的id 对应(<select id="getPerson")
2.修改PersonMapper.xml中的命名空间namespace使之指向接口
namespace="com.lql.study.action.IPersonOption"
3.修改测试类
public Person selectById(int pid) { //以下是接口方法方式 IPersonOption op=session.getMapper(IPersonOption.class); Person person2=op.getPerson(pid); System.out.println(person2.getName()); session.close(); return person2; }
发表评论
-
对比两个表不同记录
2017-05-11 14:02 469minus运算的主要功能是: 在进行两个表格或者两个查询结果的 ... -
oracle导入数据过程
2016-06-13 10:45 533(1)用sqlplus登陆 sqlplus中:用户名 as ... -
mybatis-分页插件-PageHelper使用笔记
2016-06-04 21:44 2767一准备工作 下载 jar包,以目前最新版本4.15为例,jav ... -
mybatis 学习笔记(三)动态SQL
2016-06-04 19:12 374MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我 ... -
mybatis 学习笔记(二)mybatis常用的操作
2016-05-31 21:22 478(一)本文简介 本文主要记录一下mybatis的常用操作 ... -
查询sql 行变列
2016-04-17 20:08 383查询语句,行变列的经典用法 教师号 星期号 是否有课 1 ... -
windows下配置mysql集群
2016-04-01 23:13 604配置 MySQL 群集必需使用其群集版本,注意和 MySQL ... -
mysql集群学习
2016-03-31 21:19 482MySQL 群集是一种技术,该技术允许在无共享的系统中部署“内 ...
相关推荐
【标题】"MyBatis学习笔记1" 涉及的知识点主要集中在MyBatis这一流行的持久层框架上。MyBatis是一个优秀的Java ORM(对象关系映射)框架,它允许开发者将SQL查询与Java代码分离,使得数据库操作更加灵活且易于维护。...
这篇“mybatis 学习笔记”将带你深入理解 MyBatis 的核心概念和主要功能。 1. **MyBatis 概述**: MyBatis 是一个轻量级的 Java ORM(对象关系映射)框架,它的核心是 SQL 映射文件和 SqlSessionFactory。ORM 技术...
mybatis学习笔记 mybatis学习笔记 mybatis学习笔记 mybatis学习笔记 mybatis学习笔记 mybatis学习笔记
Mybatis学习笔记(狂神).md
在"MyBatis学习笔记.zip"这个压缩包中,包含了四天的学习内容,分别以"MyBatis_day1"、"MyBatis_day2"、"MyBatis_day3"和"MyBatis_day4"命名,这些笔记可能详细阐述了MyBatis的核心概念和使用方法。让我们逐一解析...
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。 MyBatis是一个优秀的持久层框架,它对jdbc的操作...
MyBatis-Plus 学习笔记 MyBatis-Plus 是一个基于 MyBatis 的增强工具,旨在简化开发、提高效率。它提供了许多实用的特性和功能,例如无侵入、损耗小、强大的 CRUD 操作、支持 Lambda 形式调用、支持多种数据库、...
【MyBatis学习笔记一】——MyBatis入门demo.zip 博客地址:https://blog.csdn.net/weixin_43817709/article/details/117370755
本学习笔记是作者在大学期间深入学习Mybatis后的整理,旨在帮助初学者快速入门并掌握其核心概念与功能。 笔记共分为11个章节,涵盖Mybatis的基础到高级应用,以下是主要知识点的详细讲解: 1. **Mybatis简介**:...
在本学习资源中,你将找到一份详尽的Mybatis学习笔记和源码,这将极大地助力你的学习过程,尤其是对自学者而言。这份笔记被认为是非常有价值且深入的,作者在其中倾注了大量的精力,确保了内容的全面性和实用性。 ...
个人mybatis学习笔记,是个人学习后记录所得,记录内容仅供参考,如如果有什么不对的地方,欢迎指正。
MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs...
【MyBatis学习笔记六】——MyBatis一对一,一对多,多对一,多对多.zip博客地址:https://blog.csdn.net/weixin_43817709/article/details/117537580
Mybatis学习笔记整理,全面详实,通俗易懂.md
通过马士兵老师的MyBatis学习笔记,你可以系统地学习MyBatis的各个功能点,理解其工作原理,进而熟练掌握这个强大的持久层框架。在实际项目中,MyBatis能够帮助你更高效、灵活地处理数据库操作,提升开发效率。