mybatis
什么是框架
- 框架是偷懒的程序员将代码进行封装,之后进行重复使用的过程
- 框架其实是一个半成品,有些东西是封装不了的。以链接数据库为例,链接数据库的 驱动,url、用户名、密码
- 程序员在使用框架的时候,必须要告诉框架需要的信息。通常以配置文件的 方式告知,一般来说,多数会使用XML作为框架的配置文件。
- 因此在使用框架开发代码时,需要编写配置文件,代码的编写反而会减少。
- 框架都是第三方提供的,提供的是jar包,因此使用框架前,必须将框架涉及的jar包导入项目中。
常见的java开发框架
- Mybatis,ORM框架,底层都是对jdbc经行了封装
- Spring 是一个容器
- SpringMVC 分层框架
- Struts2 类似于springmvc
- Hibernate 类似于mybatis
- ssh:struts2 hibernate spring ssm:spring springmvc mybatis
Mybatis简介
- Mybatis是一个ORM框架,用于操作数据库,底层是对jdbc进行的封装。
- Mybatis的前身是iBatis,是Aache下的一个开源项目。现在迁移到GItHub上。
- 中文网址:http://www.mybatis.org/mybatis-3/zh/getting-started.html
Mybatis的核心jar包
- mybatis-3.2.7.jar
3.2.2Mybatis依赖的jar
- asm-3.2.1.jar 字节码解析包 被cglib依赖
- cglib-2.2.2.jar 动态代理的实现
- commons-logging-1.1.1.jar 日志包
- javassist-3.17-GA.jar 字节码解析包
- log4j-1.2.17.jar 日志包
- log4j-api-2.0-rcl-jar 日志包
- slff4j-api-1.7.5.jar 日志包
- slf4j-log412-1.7.5.jar 日志包
3.2.3驱动jar
- mysql-connector-5.1.30.jar
3.3编写配置文件
- 是一个xml文件,命名无要求,一般命名为mybatis.xml.放在src目录下。
- 关联mybatis配置文件的dtd约束。
- alt+/ 提示
- 编写配置文件
查询操作
mybatis.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 <!-- 用于指定使用哪个开发 7 用于指定使用的环境id 8 --> 9 <environments default="dev"> 10 <!-- 用于配置开发环境 11 id:环境的唯一识别码 12 --> 13 <environment id="dev"> 14 <!-- 事务管理器 15 type:用于设定mybatis采用什么方式管理事务 16 JDBC表示和JDBC一样事务的管理方式 17 --> 18 <transactionManager type="JDBC"></transactionManager> 19 <!-- 数据源/连接池 20 用于配置链接池和数据库链接的参数 21 type:用于设置mybatis是否采用链接池技术 22 连接池:用来存数据库链接的,减少数据库的频繁开关 23 POOLED表示mybatis采用连接池技术 24 --> 25 <dataSource type="POOLED"> 26 <property name="driver" value="com.mysql.jdbc.Driver"/> 27 <property name="url" value="jdbc:mysql://localhost:33.06/java505"/> 28 <property name="username" value="rooot"/> 29 <property name="password" value="root"/> 30 </dataSource> 31 </environment> 32 </environments> 33 </configuration>
3.4定义POJO实体类
1 package com.bjsxt.pojo; 2 3 import java.io.Serializable; 4 5 public class User implements Serializable { 6 private int id; 7 private String username; 8 private String password; 9 public String toString() { 10 return "User [id=" + id + ", username=" + username + ", password=" 11 + password + "]"; 12 } 13 public int hashCode() { 14 final int prime = 31; 15 int result = 1; 16 result = prime * result + id; 17 result = prime * result + ((password == null) ? 0 : password.hashCode()); 18 result = prime * result + ((username == null) ? 0 : username.hashCode()); 19 return result; 20 } 21 public boolean equals(Object obj) { 22 if (this == obj) 23 return true; 24 if (obj == null) 25 return false; 26 if (getClass() != obj.getClass()) 27 return false; 28 User other = (User) obj; 29 if (id != other.id) 30 return false; 31 if (password == null) { 32 if (other.password != null) 33 return false; 34 } else if (!password.equals(other.password)) 35 return false; 36 if (username == null) { 37 if (other.username != null) 38 return false; 39 } else if (!username.equals(other.username)) 40 return false; 41 return true; 42 } 43 public int getId() { 44 return id; 45 } 46 public void setId(int id) { 47 this.id = id; 48 } 49 public String getUsername() { 50 return username; 51 } 52 public void setUsername(String username) { 53 this.username = username; 54 } 55 public String getPassword() { 56 return password; 57 } 58 public void setPassword(String password) { 59 this.password = password; 60 } 61 public User(int id, String username, String password) { 62 super(); 63 this.id = id; 64 this.username = username; 65 this.password = password; 66 } 67 public User() { 68 super(); 69 } 70 71 }
3.5数据访问层(Mapper映射文件)
以前是DAO,在Mybatis中,推荐使用mapper作为包名,我们只需要写一个映射配置文件即可。UserMapper.xml.用于定义要执行的SQL语句,同时设定返回结果的类型。
UserMapper.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 <!-- namespa:命名空间,可以随意定义,一般情况下要写全限定路径(包名加类) 6 MyBatis管理SQL语句是通过namespace+id来定位的 7 --> 8 <mapper namespace="com.bjsxt.mapper.UserMapper"> 9 <!-- select标签用于编写查询语句 10 id:sql语句的唯一的标识,类比为方法名 11 resultType:用于设定返回结果的类型(全限定路径) 12 如果返回结果是集合,要写集合泛型的类型 13 --> 14 <select id="sellAll" resultType="com.bjsxt.pojo.User"> 15 select * from t_user 16 </select> 17 </mapper>
3.6编写测试文件
1 package com.bjsxt.test; 2 3 import java.io.IOException; 4 import java.io.InputStream; 5 import java.util.List; 6 7 import org.apache.ibatis.io.Resources; 8 import org.apache.ibatis.session.SqlSession; 9 import org.apache.ibatis.session.SqlSessionFactory; 10 import org.apache.ibatis.session.SqlSessionFactoryBuilder; 11 import org.apache.log4j.BasicConfigurator; 12 13 14 15 16 17 import org.apache.log4j.chainsaw.Main; 18 import org.junit.Test; 19 20 import com.bjsxt.pojo.User; 21 22 public class TestMyBatis { 23 @Test 24 public void testSellAll()throws IOException{ 25 System.out.println(123); 26 27 //加载mybatis核心配置文件 28 InputStream is=(InputStream) Resources.getResourceAsStream("mybatis.xml"); 29 //构建sqlSessionFactory工厂对象 30 SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is); 31 //通过工厂打开Sqlsession 32 SqlSession session = factory.openSession(); 33 //通过session执行查询操作 34 List<User> list = session.selectList("com.bjsxt.mapper.UserMapper.sellAll"); 35 System.out.println(list); 36 //关闭资源 37 session.close(); 38 } 39 }
个人学习笔记,记录日常学习,便于查阅及加深,仅为方便个人使用。