Mybatis进阶

一.SQ​​大号语句拼,接向SQL语句传递参数

1.向SQL语句传递需要的参数

import java.io.IOException;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import db.Dbutil;
import model.Message;
/**
 * 数据操作层
 */
public class MessageDAO {
 	// 获取数据库所有内容
 	public List getAll() {
 		Dbutil dbUtil = new Dbutil();
 		List messageList = null;
 		try {
 			// 获取sqlSession
 			SqlSession sqlSession = dbUtil.dbAceess();
 			// 参数为配置文件中"参数1.参数2" 参数1为sql配置文件中mapper标签的namespace属性值 参数2为select标签的id值
 			// 返回值根据resultMap标签中的配置进行填充
 			messageList = sqlSession.selectList("Message.queryMessageList");
 			return messageList;
 		} catch (IOException e) {
 			e.printStackTrace();
 			System.out.println("fail");
 			return null;
 		}
 	}
 	// 根据input查询数据和根据ret模糊查询
 	public List queryMessageList(String input, String ret) {
 		Dbutil dbUtil = new Dbutil();
 		List messageList = null;
 		Message m = new Message();
 		m.setInput(input);
 		m.setRet(ret);
 		try {
 			// 获取sqlSession
 			SqlSession sqlSession = dbUtil.dbAceess();
 			// 向sql传递参数,此方法只能传递一个参数
 			messageList = sqlSession.selectList("Message.queryMessageList", m);
 			return messageList;
 		} catch (IOException e) {
 			e.printStackTrace();
 			System.out.println("fail");
 			return null;
 		}
 	}
 	// 单条删除
 	public void deleteOne(int id) {
 		Dbutil dbUtil = new Dbutil();
 		try {
 			SqlSession sqlSession = dbUtil.dbAceess();
 			sqlSession.delete("Message.deleteOne", id);
 			// 对数据表修改的操作需要提交事务
 			sqlSession.commit();
 		} catch (IOException e) {
 			e.printStackTrace();
 			System.out.println("fail");
 		}
 	}
 	// 批量删除
 	public void deleteBatch(List ids) {
 		Dbutil dbUtil = new Dbutil();
 		try {
 			SqlSession sqlSession = dbUtil.dbAceess();
 			sqlSession.delete("Message.deleteBatch", ids);
 			sqlSession.commit();
 		} catch (IOException e) {
 			e.printStackTrace();
 			System.out.println("fail");
 		}
 	}
 	public static void main(String[] args) {
 		MessageDAO messageDao = new MessageDAO();
 		// List messageList= messageDao.queryMessageList("哈哈", "");
 		// for(Message m:messageList) {
 		// System.out.println(m.getId()+" "+m.getInput());
 		// }
 		messageDao.deleteOne(1);
 	}
}

2.在MyBatis的映射文件Message.xml中接收参数




 	delete from messages where id =#{_parameter}



 	delete from messages where id in(
 	
 	
 		#{item}
 	
 	)            

OGNL表达式的用法

Mybatis进阶_第1张图片

Mybatis进阶_第2张图片

二。利用log4j的进行MyBatis的动态调试

1.导入的log4j-1.2.17.jar

2.src下面存放的log4j配置文件log4j.properties

作出修改

log4j.rootLogger=DEGUB,Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

三。配置一对多关系

1.表结构

输入表

Mybatis进阶_第3张图片

input_content表

Mybatis进阶_第4张图片

2.实体类

输入类

import java.util.List;
/**
 * 输入指令
 * @author lingyumin
 *
 */
public class Input {
 	private int id;
 	private String name;
 	private String descp;
 	List contentList;
 	public int getId() {
 		return id;
 	}
 	public void setId(int id) {
 		this.id = id;
 	}
 	public String getName() {
 		return name;
 	}
 	public void setName(String name) {
 		this.name = name;
 	}
 	public String getDescp() {
 		return descp;
 	}
 	public void setDescp(String descp) {
 		this.descp = descp;
 	}
 	public List getContentList() {
 		return contentList;
 	}
 	public void setContentList(List contentList) {
 		this.contentList = contentList;
 	}
}

InputContent类

public class InputContent {
 	private int id;
 	private String content;
 	private int inputId;
 	public int getId() {
 		return id;
 	}
 	public void setId(int id) {
 		this.id = id;
 	}
 	public String getContent() {
 		return content;
 	}
 	public void setContent(String content) {
 		this.content = content;
 	}
 	public int getInputId() {
 		return inputId;
 	}
 	public void setInputId(int inputId) {
 		this.inputId = inputId;
 	}
}    

3.映射配置文件 

 




 	
 		
 		
 		
 		
 		
 	
 	

InputContent映射




 	
 		
 		
 		
 	

4.DAO层(包括测试代码主要方法)

import java.io.IOException;
import java.util.List;
import org.apache.ibatis.session.SqlSession;
import db.Dbutil;
import model.Input;
import model.InputContent;
/**
 * 一对多数据操作层
 */
public class InputDAO {
 	
 	//根据name和descp查询input
 	public List queryInputList(String name, String descp) {
 		Dbutil dbUtil = new Dbutil();
 		List inputList = null;
 		Input input = new Input();
 		input.setName(name);
 		input.setDescp(descp);
 		try {
 			SqlSession sqlSession = dbUtil.dbAceess();
 			inputList = sqlSession.selectList("Input.queryInputList", input);
 			return inputList;
 		} catch (IOException e) {
 			e.printStackTrace();
 			System.out.println("fail");
 			return null;
 		}
 	}
 	public static void main(String[] args) {
 		InputDAO inputDao = new InputDAO();
 		List inputList = inputDao.queryInputList("段子", null);
 		for (Input i : inputList) {
 			System.out.println(i.getId() + " " + i.getName() + " " + i.getContentList());
 			List contentList = i.getContentList();
 			System.out.println(contentList.size());
 			for (InputContent c : contentList) {
 				System.out.println(c.getId() + " " + c.getContent());
 			}
 		}
 	}
}

 

三.mybatis映射配置文件常用标签

Mybatis进阶_第5张图片

 

 

你可能感兴趣的:(Mybatis进阶)