Java 45---MyBatis框架(1)

导读

1.简介
2.MyBatis增删改查(包括模糊查询)
3.动态标签

简介

MyBatis是一个轻量级持久层ORM框架,可以完成表字段与实体类中属性之间的映射

MyBatis增删改查(包括模糊查询)

Java 45---MyBatis框架(1)_第1张图片

配置文件Configuration.xml






  
  
    
  
    
  


  
    
  

  
    
      
        
      
      
        
        
        
        
      
    
  


  
    
  


Book.java

package com.hala.entity;

public class Book {
	
	private int bookId;
	private String bookName;
	private Double price;
	private String author;
	
	
	public Book() {
		super();
	}

	

	public Book(String bookName, Double price, String author) {
		super();
		this.bookName = bookName;
		this.price = price;
		this.author = author;
	}



	public Book(int bookId, String bookName, Double price, String author) {
		super();
		this.bookId = bookId;
		this.bookName = bookName;
		this.price = price;
		this.author = author;
	}



	public int getBookId() {
		return bookId;
	}



	public void setBookId(int bookId) {
		this.bookId = bookId;
	}



	public String getBookName() {
		return bookName;
	}



	public void setBookName(String bookName) {
		this.bookName = bookName;
	}



	public Double getPrice() {
		return price;
	}



	public void setPrice(Double price) {
		this.price = price;
	}



	public String getAuthor() {
		return author;
	}



	public void setAuthor(String author) {
		this.author = author;
	}



	@Override
	public String toString() {
		return "Book [bookId=" + bookId + ", bookName=" + bookName + ", price=" + price + ", author=" + author + "]";
	}

	
	
	
}

Book.xml








  
  
    
    
    
    
  



  
  
  
  
  
  
  
  
  



 
    INSERT INTO my_book
    (
    book_name,
    price,
    author
    )
    VALUES
    (
    
    #{bookName},
    #{price},
    #{author}
    )
  
  
  
   
  
  
    UPDATE my_book SET
   		price=#{price}
    WHERE
    book_name = #{bookName}
  
  
  
 
  
    DELETE FROM my_book WHERE book_id = #{bookId}
  

 


BookTest.java

package com.hala.test;

import java.io.IOException;
import java.io.Reader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import com.hala.entity.Book;

public class BookTest {
	
	private SqlSession ss=null;
	
	@BeforeEach
	public void before() throws IOException {
		
		//Mybatis中操作数据使用sqlSession对象
		//由sqlSessionFactory生成
		
		//1.解析配置文件,并生成字符流
		Reader reader=Resources.getResourceAsReader("Configuration.xml");
		//2.根据文件配置信息生成SqlSessionFactory
		SqlSessionFactory ssf=
				new SqlSessionFactoryBuilder().build(reader);
		//3.根据SqlSessionFactory获取SqlSession
		ss=ssf.openSession();
		//设置自动提交事务
		//ss=ssf.openSession(true);
	}
	
	@AfterEach
	public void after() {
		ss.close();
	}
	
	
	//按照id查询单个(这里根据什么查询是在Book.xml
		Book book=ss.selectOne("Book.queryOne", 2);
		System.out.println(book);
	}
	
	
	//查询所有
//	@Test
	public void queryMany() {
		
		List books=ss.selectList("Book.queryMany");
		
		for (Book book : books) {
			System.out.println(book);
		}
	}

	
	//根据价格条件查询
//	@Test
	public void queryByPrice() {
		//MyBatis中不能同时传多个参数,要进行集合封装
		Map map=new HashMap<>();
		map.put("price1", 20.0);
		map.put("price2",100.0);
		List books=ss.selectList("Book.queryByPrice",map);
		
		for (Book book : books) {
			System.out.println(book);
		}
	}
	
	
	//模糊查询(查询作者名字包含J的书名)
	@Test
	public void queryNameByAuthor() {
		
		List books=ss.selectList("Book.queryNameByAuthor","J");
		
		for (String book : books) {
			System.out.println(book);
		}
	}
	
	
	//插入数据
//	@Test
	public void insert() {
		Book book=new Book("Holmes",56.6,"Conan");
		int count=ss.insert("Book.insert",book);
		//对数据库改动要提交事务
		ss.commit();
		System.out.println(count);
		
	}
	
	//修改数据
//	@Test
	public void update() {
		Book book=new Book();
		book.setPrice(78.0);
		book.setBookName("Holmes");
		
		int count=ss.update("Book.update",book);
		ss.commit();
		System.out.println(count);
	}
	
	//删除
//	@Test
	public void delete() {
		int count=ss.delete("Book.delete",2);
		ss.commit();
		System.out.println(count);
	}	

}

处理模糊查询的方法:

1.传入参数时,自己处理
2.如上用concat函数
3.用下边bind标签处理

提高代码复用率的方法

Java 45---MyBatis框架(1)_第2张图片

动态标签

1.
2.替代WHERE关键字,去除多余的and
3.替代set关键字,并去除最后一个多余的逗号
4.
5.
  			and name = #{name},
  		
6.
7.

其他文件一致
Book.xml








  
  
    
    
    
    
  
  
  
  
 
  
 
  
  
  
  		UPDATE my_book
  		
	  		
	  			book_name LIKE #{bookName},
	  		
	  			price= #{price},
	  		
	  			author=#{author},
	  		
	  	
  

 


BookTest.java

package com.hala.test;

import java.io.IOException;
import java.io.Reader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;

import com.hala.entity.Book;

public class BookTest {
	
	private SqlSession ss=null;
	
	@BeforeEach
	public void before() throws IOException {
		
		//Mybatis中操作数据使用sqlSession对象
		//由sqlSessionFactory生成
		
		//1.解析配置文件,并生成字符流
		Reader reader=Resources.getResourceAsReader("Configuration.xml");
		//2.根据文件配置信息生成SqlSessionFactory
		SqlSessionFactory ssf=
				new SqlSessionFactoryBuilder().build(reader);
		//3.根据SqlSessionFactory获取SqlSession
		ss=ssf.openSession();
		//设置自动提交事务
		//ss=ssf.openSession(true);
	}
	
	@AfterEach
	public void after() {
		ss.close();
	}
	
	@Test
	public void query() {
		Map map=new HashMap<>();
		map.put("author", "J%");
		List books=ss.selectList("Book.query",map);
		
		for (Book book : books) {
			System.out.println(book);
		}
	}
	
	

}

bind标签

Java 45---MyBatis框架(1)_第3张图片
Java 45---MyBatis框架(1)_第4张图片

trim标签

Java 45---MyBatis框架(1)_第5张图片

foreach标签

Java 45---MyBatis框架(1)_第6张图片

choose标签

Java 45---MyBatis框架(1)_第7张图片

你可能感兴趣的:(Java开发)