JAVA--高級開發--Mybatis框架

---------Mybatis註解-------java

import com.bdit.model.User;
import org.apache.ibatis.annotations.*;
import java.util.List;
//使用註解方式開發 Mapper 接口
public interface IUserDao {
    //查詢全部的信息:使用註解
    @Select("select * from  user")
    @Results(id ="Map1",value ={
            @Result(id =true,column ="id",property ="id"),
            @Result(column = "username",property ="username"),
            @Result(column ="age",property = "age"),
            @Result(column = "address",property ="address")})
    public List<User>findAll();

    //根據id去查找:使用註解
    @Select("select  * from  user  where id=#{id}")
    @ResultMap("Map1")
    public User findById(Integer id);
    //添加用戶:使用註解
   @Insert("insert  into  user(username,age,address)values(#{username},#{age},#{address})")
  //查詢新增用戶的id
   @SelectKey(keyColumn ="id",keyProperty ="id",resultType =int.class,
   before =false,statement ={"select last_insert_id()"})
    public int insert(User user);
   //更新用戶的信息:使用註解
    @Update("update   user  set username=#{username},age=#{age},address=#{address}")
    public int update(User  user);
    //刪除用戶的信息:使用註解
    @Delete("delete from  user where  id=#{id}")
    public int delete(Integer id);
    //使用註解查詢總記錄數:
    @Select("select count(id) from user")
    public int totalCount();
    //模糊查詢:使用註解
    @Select("select *  from  user where  username like #{username}")
    public List<User> findByName(String name);
//    @Insert:實現添加
// @Update:實現修改
// @Delete:實現刪除
// @Select:實現查詢
// @Result:實現結果集的封裝
// @Results:能夠與@Result 一塊兒使用,封裝多個結果集
// @ResultMap:實現引用@Results 定義的封裝
// @One:一對一結果封裝
// @Many:一對多結果封裝
// @CacheNamespace:二級緩存
// @SelectProvider:實現動態 SQL 映射
}

--------多表查詢---------sql

package com.bdit.dao;
import com.bdit.model.Account;
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.mapping.FetchType;
import java.util.List;
public interface IAccountDao {
  //查詢全部的帳戶:使用註解,並關聯用戶的信息

  @Select("select  *  from Account")
  @Results(id = "Map",value ={
          @Result(id =true,column ="zid",property ="zid"),
          @Result(column ="uid",property = "uid"),
          @Result(column ="money",property = "money"),
          @Result(column ="uid",property ="user",one=@One(select = "com.bdit.dao.IUserDao.findById",fetchType = FetchType.LAZY))

  })
    public List<Account> findAll();

//  @Result 屬性說明:
//  id :是不是註解字段 true false
//  column:數據庫的列名
//  property:屬性名
//  one:須要使用@One 註解
//  many:須要使用@Many 註解
//  @One 註解(一對一),代理< association >標籤,是多表查詢的關鍵,在註解中用來指定返 回的單一對象
//  @One 屬性說明:
//  select 指定用來多表查詢的 sqlmapper
//  fetchType:會覆蓋全局的配置參數 lazyLoadingEnabled
//  使用格式:
//  @Result(column=」」,property=」」,one=@One(select=」」))
//  @Many 註解(一對多),代替了<Collection>標籤,在註解中用來指定返回對象的集合
//  使用格式:
//  @Result(property=」」,column=」」,many=@Many(select=」」))
}

測試類數據庫

package com.bdit;

import com.bdit.dao.IUserDao;
import com.bdit.model.User;
import org.apache.ibatis.annotations.SelectKey;
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 org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

//測試類
public class mybatisTest1 {
    private InputStream input;
    private SqlSessionFactory factory;
    private SqlSession session;
    private IUserDao iUserDao;
    @Before //封裝好的數據,初始化時加載
    public void init()throws IOException {
        //1 、 讀取配置文件-->SqlMapConfig核心的配置文件
        input = Resources.getResourceAsStream("SqlMapConfig.xml");
        //二、建立SqlSessionFactoryBuilder構建者的對象。
        SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
        // 三、使用構建者對象建立工廠對象:SqlSessionFactory
        factory = builder.build(input);
        //四、使用SqlSessionFactory對象建立SqlSession對象
        //4.1 =設置事務爲自動提交
        session = factory.openSession(true);
        //五、使用SqlSession對象建立Dao接口的代理對象
        iUserDao= session.getMapper(IUserDao.class);
    }
    @After
    public  void  destory()throws IOException {
        //提交事務 --上面設置爲自動提交
        //session.commit();
        //關閉釋放資源
        session.close();
        input.close();
    }
    //查詢帳全部的用戶
    @Test
    public void find(){
        List<User>list=iUserDao.findAll();
        for(User ss:list) {
            System.out.println(ss);
        }
    }

    //跟句id去查找用戶的信息
    @Test
    public  void find1(){
        User user=iUserDao.findById(1);
        System.out.println(user);
    }
    //添加用戶的信息
    @Test
    public void insert(){
        User  user=new User();
        user.setUsername("臥龍");
        user.setAge("23");
        user.setAddress("兗州");
        int  i=iUserDao.insert(user);
        if(i>0){
            System.out.println("添加成功");
        }
        System.out.println("新增用戶的id"+user.getId());
    }

    //使用註解完成用戶的更新操做
    @Test
    public  void method(){
        User user=iUserDao.findById(8);
        user.setUsername("文傑");

        int i=iUserDao.update(user);
        if(i>0){
            System.out.println("更新成功");
        }
    }

    //使用註解刪除用戶的信息
    @Test
    public void delete(){
        int  i=iUserDao.delete(8);
        if(i>0){
            System.out.println("刪除成功");
        }
    }
    //查詢總記錄數
    @Test
    public void total(){
        int i=iUserDao.totalCount();
        System.out.println(i);
    }
    //模糊查詢
    @Test
    public void username(){
        List<User>list=iUserDao.findByName("%文%");
        for(User  user:list){
            System.out.println(user);
        }
    }
}
package com.bdit;

import com.bdit.dao.IAccountDao;
import com.bdit.model.Account;
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 org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

//測試類
public class mybatisTest2 {
    private InputStream input;
    private SqlSessionFactory factory;
    private SqlSession session;
    private IAccountDao iAccountDao;
    @Before //封裝好的數據,初始化時加載
    public void init()throws IOException {
        //1 、 讀取配置文件-->SqlMapConfig核心的配置文件
        input = Resources.getResourceAsStream("SqlMapConfig.xml");
        //二、建立SqlSessionFactoryBuilder構建者的對象。
        SqlSessionFactoryBuilder builder=new SqlSessionFactoryBuilder();
        // 三、使用構建者對象建立工廠對象:SqlSessionFactory
        factory = builder.build(input);
        //四、使用SqlSessionFactory對象建立SqlSession對象
        //4.1 =設置事務爲自動提交
        session = factory.openSession(true);
        //五、使用SqlSession對象建立Dao接口的代理對象
        iAccountDao = session.getMapper(IAccountDao.class);
    }
    @After
    public  void  destory()throws IOException {
        //提交事務 --上面設置爲自動提交
        //session.commit();
        //關閉釋放資源
        session.close();
        input.close();
    }
    //查詢帳全部的帳戶:並關聯全部的用戶
    @Test
    public void find(){
        List<Account>list=iAccountDao.findAll();
        for(Account  ss:list){
            //只查詢全部的帳戶:
            System.out.println(ss.getZid()+"=="+ss.getUid()+"=="+ss.getMoney());
            System.out.println(ss.getUser());
        }
    }
}
相關文章
相關標籤/搜索