关于Mybaties 的简单应用和 入门

来源:互联网 发布:淘宝网刷单 物流单号 编辑:程序博客网 时间:2024/06/11 16:22

今天是我第一次写博客,热爱的程序的我,开始学习三大框架的入门知识,希望我能每天都坚持下去,积小流成江河。

首先Mybaties框架是正对数据库的操作应用,

          我需要准备的就是 mybaties的Jar包:mybatis-3.2.5.jar

        Mybaties的主配置文件:SqlMapConfig.xml 一般默认放在SRC目录下就可以了

        对应JavaBean的SQl 对应的文件 例如: EmpMapper.XML

        

 

1.先 一个获取SqlSession的类:

 

 

 

package org.com.tarena.util;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

public class MBUtil {

  public static SqlSession getSqlSession() {
  SqlSessionFactoryBuilder ssfb = new SqlSessionFactoryBuilder();
  String  conf="SqlMapConfig.xml";
  InputStream  in=MBUtil.class.getClassLoader().getResourceAsStream(conf);
  SqlSessionFactory  ssf=ssfb.build(in);
  SqlSession    sqlsession=ssf.openSession();
  return  sqlsession;
  
  

 }

}

2.执行操作语句

package org.com.tarena.test;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.com.tarena.bean.User;
import org.com.tarena.bean.UserMapper;
import org.com.tarena.util.MBUtil;
import org.junit.Test;

public class TestMyBaties {
 // @Test
 public void test1() {

  SqlSession ss1 = MBUtil.getSqlSession();
  SqlSession ss2 = MBUtil.getSqlSession();
  System.out.println(ss1);
  System.out.println(ss2);
  ss1.close();
  ss2.close();

 }

 // @Test
 public void test11() {
  User uu = new User();
  uu.setName("张靓颖");
  uu.setAddr("画心");
  uu.setId("2015");

  SqlSession ss = MBUtil.getSqlSession();
  int x = ss.insert("save", uu);
  System.out.println(x);
  List<User> u1 = ss.selectList("findAll");
  for (User ui : u1) {
   System.out.println(ui);
  }
  System.out.println();
  System.out.println();
  // ss.delete("deleteById","001");
  List<User> u = ss.selectList("findAll");
  for (User ui : u) {
   System.out.println(ui);
  }

  // System.out.println(u);
  // ss.commit(true);
  ss.close();
 }

 

 

3.  --最后通过session.getMapper(UserMapper.class);
     动态生成一个实现类,通过该对象触发SQL操作.
   

@Test
 public void test2() {

  SqlSession sqlsession = MBUtil.getSqlSession();
  UserMapper s = sqlsession.getMapper(UserMapper.class);
         List<String>   u=s.findAll();
  System.out.println(u);
//  System.out.println("uuu"+u);
 
  
  

 }
}

4.完成对数据库的各种操作

注意:UserMapper.xml中配置的返回值类型,需要和getMapper调用的方法的返回值一样,不然报错,向上造型异常,在数据库查出数据的时候,如果查出数据的类型和sqlmapper里面定义的不一样,只会映射查出结果有的,没有的为空,如果查出的数据多余类定义的变量,则也只会映射类中有的,多的不映射,但都不报错。。如果返回的应该用类接受,,但写成一个变量,则会映射查出记录的第一个字段(默认)

对接口和类的理解又加深了

接口为映射过来的类只是提供了一个,调用名称和返回值,错误正确,在调用sql执行语句的时候才知道

 

 

        其工作流程大致是:

         MyBatis执行过如下:
  --首先加载、解析配置文件
     (SqlMapConfig.xml和SQL定义的SqlMap.xml)
  --然后将SQL语句提取,封装成MappedStatement
  --然后接收SQL参数,利用SqlSession执行SQL操作
     根据id名字调用对应的MappedStatement对象,
     根据规则设置SQL参数,发送到数据库执行
  --如果是查询最后将结果集数据映射成Map,Enity对象返回

 

 

 

 

 

 

 

 

 

 

 

0 0
原创粉丝点击