mybatis

什么是框架

  1. 框架是偷懒的程序员将代码进行封装,之后进行重复使用的过程
  2. 框架其实是一个半成品,有些东西是封装不了的。以链接数据库为例,链接数据库的 驱动,url、用户名、密码
  3. 程序员在使用框架的时候,必须要告诉框架需要的信息。通常以配置文件的 方式告知,一般来说,多数会使用XML作为框架的配置文件。
  4. 因此在使用框架开发代码时,需要编写配置文件,代码的编写反而会减少。
  5. 框架都是第三方提供的,提供的是jar包,因此使用框架前,必须将框架涉及的jar包导入项目中。

常见的java开发框架

  1. Mybatis,ORM框架,底层都是对jdbc经行了封装
  2. Spring 是一个容器
  3. SpringMVC  分层框架
  4. Struts2     类似于springmvc
  5. Hibernate     类似于mybatis   
  6. ssh:struts2 hibernate  spring    ssm:spring springmvc mybatis

Mybatis简介

  1. Mybatis是一个ORM框架,用于操作数据库,底层是对jdbc进行的封装。
  2. Mybatis的前身是iBatis,是Aache下的一个开源项目。现在迁移到GItHub上。
  3. 中文网址: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 }

原文地址:https://www.cnblogs.com/wq-9/p/10198867.html