MyBatis
框架技术
是一个应用程序的半成品: 一个框架程序员可以配置的选择/选项越多,认为这款框架的可扩展性强。 面向SQL的一个框架 SQL程序员 入参自动装配 返回值自动装配提供可重用的公共结构 10个项目 基础架构 按一定规则组织的一组组件
组件(Component)是对数据和方法的简单封装封装了特定功能和属性的一个对象:我们封装过TextBox:(只能接受数字:)
框架的优势
不用再考虑公共问题 、专心在业务实现上、结构统一,易于学习、维护、新手也可写出好程序
01.持久化与ORM
ORM:(Object Relational Mapping)对象关系映射
编写程序的时候,程序员更倾向于以面向对象的思维方式处理数据 A.b.getName()
保存数据的时候,却以关系型数据库的方式存储 “cn.happy.Action”
(坑爹啊~~~~~~~)
持久化:持久化是程序数据在瞬时状态和持久状态间转换的过程
02.MyBatis简介
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation(基础) 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。
iBatis是半自动ORM映射框架,它需要在数据库里手动建表,CURD操作时要自己写SQL语句,而Hibernate是全ORM映射框架,它只需要配置好文件,表会自动生成,CURD的SQL语句也是自动生成的,这是他们的主要区别。
MyBatis小巧,简单易学
MyBatis是映射SQL的,而Hibernate是映射实体类的
中文文档
http://www.mybatis.org/mybatis-3/zh/index.html
03.MyBatis快速入门
1.下载jar 包
Jar包下载路径
http://repo1.maven.org/maven2/org/mybatis/mybatis/
2.附加jar包
3.编写MyBatis配置文件 mybatis-config.xml(大配置文件)
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 <configuration> 6 <environments default="development"> 7 <environment id="development"> 8 <transactionManager type="JDBC" /> 9 <dataSource type="POOLED"> 10 <property name="driver" value="oracle.jdbc.OracleDriver" /> 11 <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl" /> 12 <property name="username" value="s2220" /> 13 <property name="password" value="ss" /> 14 </dataSource> 15 </environment> 16 </environments> 17 <!--映射文件:描述某个实体和数据库表的对应关系 --> 18 <mappers> 19 <mapper resource="cn/happy/entity/Dept.xml" /> 20 </mappers> 21 </configuration>
创建实体类
1 public class User { 2 // 用户id 3 private int uid; 4 // 用户名 5 private String uname; 6 //密码 7 private String upwd; 8 //手机 9 private String phone; 10 public String getUpwd() { 11 return upwd; 12 } 13 14 public void setUpwd(String upwd) { 15 this.upwd = upwd; 16 } 17 18 public String getPhone() { 19 return phone; 20 } 21 22 public void setPhone(String phone) { 23 this.phone = phone; 24 } 25 26 27 public int getUid() { 28 return uid; 29 } 30 public void setUid(int uid) { 31 this.uid = uid; 32 } 33 public String getUname() { 34 return uname; 35 } 36 public void setUname(String uname) { 37 this.uname = uname; 38 } 39 }
创建一个小配置文件 xml 形式
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper 3 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 <mapper namespace="cn.wh.dao.IUserDao"> 6 <resultMap type="cn.wh.entity.User" id="MessageResult"> 7 <id column="uid" jdbcType="INTEGER" property="uid"/> 8 <result column="uname" jdbcType="VARCHAR" property="uname" /> 9 <result column="upwd" jdbcType="VARCHAR" property="upwd" /> 10 <result column="uphone" jdbcType="VARCHAR" property="phone" /> 11 </resultMap> 12 <select id="findAll" resultMap="MessageResult"> 13 select * from user 14 </select>
编写测试类
1 @Test//查询 2 public void selectAll(){ 3 String path="mybatis-config.xml"; 4 SqlSession sqlSession=null; 5 try { 6 InputStream is= org.apache.ibatis.io.Resources.getResourceAsStream(path); 7 SqlSessionFactoryBuilder sqlSessionFactoryl=new SqlSessionFactoryBuilder(); 8 SqlSessionFactory factory= sqlSessionFactoryl.build(is); 9 sqlSession=factory.openSession(); 10 List<User> list= sqlSession.selectList("findAll"); 11 for (User item:list 12 ) { 13 System.out.println(item.getUname()); 14 } 15 16 } catch (IOException e) { 17 e.printStackTrace(); 18 }finally { 19 sqlSession.close(); 20 } 21 }
输出结果