javaEE Mybatis,动态sql,if标签、where标签、set标签、foreach标签,sql片段

Mybatis的Jar包下载:https://pan.baidu.com/s/16P-MGgn53e1EtCL6wQ9VWA  密码:1azq

 

UserMapper.xml(实体类的Sql配置文件,动态sql(标签),sql片段):





 
	
	
	
		select id, username, birthday, sex, address from user
	
	
	
	
	
	
	
	
	

	
	
	
		update customer 
		
			
				cust_name = #{cust_name},
			
			
				cust_linkman = #{cust_linkman},
			  
		
		
			cust_id = #{cust_id}
		
	

QueryVo.java(包装类,封装sql占位符的输入参数):

package com.xxx.mybatis.pojo;

import java.io.Serializable;
import java.util.List;

// pojo包装对象
public class QueryVo implements Serializable {
	
	private static final long serialVersionUID = 1L;
	
	//private User user;  // 简单pojo对象作为包装对象的属性
	
	List ids;  //动态sql;在mapper.xml文件中可以通过foreach标签遍历生成动态sql。
	
	//Integer[] ids;
	
	
	public List getIdsList() {
		return ids;
	}
	public void setIdsList(List ids) {
		this.ids = ids;
	}
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	
}

Test.java(测试类):

package com.xxx.mybatis.junit;

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

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.Test;

import com.xxx.mybatis.mapper.UserMapper;
import com.xxx.mybatis.pojo.User;

public class Test {
	
	//根据性别和名字查询用户
	@Test
	public void testfindUserBySexAndUsername() throws Exception {
		String resource = "sqlMapConfig.xml";
		InputStream in = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
		SqlSession sqlSession = sqlSessionFactory.openSession();
		//---------------------------------------------------------------------
		
		UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
		User user = new User();
		user.setSex("1");
		//user.setUsername("张小明");
		List users = userMapper.selectUserBySexAndUsername(user);
		for (User user2 : users) {
			System.out.println(user2);
		}
	}
	
	//根据多个ID查询
	@Test
	public void testfindUserIDs() throws Exception {
		String resource = "sqlMapConfig.xml";
		InputStream in = Resources.getResourceAsStream(resource);
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(in);
		SqlSession sqlSession = sqlSessionFactory.openSession();
		//---------------------------------------------------------------------
		
		UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
		
		//Integer[] ids = new Integer[]{16,24,22};
		List ids  = new ArrayList();
		ids.add(16);
		ids.add(22);
		ids.add(24);
		List users = userMapper.selectUserByIds(ids);  //ids可以是List也可以是数组

		/* QueryVo vo = new QueryVo();  //包装类
		vo.setIdsList(ids);
		List users = userMapper.selectUserByIds(vo); */
		
		for (User user : users) {
			System.out.println(user);
		}
	}
	
}

UserMapper.java(遵循四个原则的Dao层接口):

package com.xxx.mybatis.mapper;

import java.util.List;

import com.xxx.mybatis.pojo.QueryVo;
import com.xxx.mybatis.pojo.User;


//其实就是Dao层接口
public interface UserMapper {
	
	//遵循四个原则:
	//UserMapper.xml中配置的命名空间要与该接口的全类名保持一致(com.xxx.mybatis.mapper.UserMapper) 
	//接口中的方法名  == UserMapper.xml中配置的sql语句的id名
	//返回值类型  与  UserMapper.xml文件中配置的返回值类型(resultType)要一致
	//方法的输入参数类型 与UserMapper.xml中配置的输入参数的类型(parameterType)要一致
	
	
	//根据性别和名字查询用户
	public List selectUserBySexAndUsername(User user);
	//根据多个id查询用户信息  
	//public List selectUserByIds(Integer[] ids);  //参数是数组
	public List selectUserByIds(List ids);   //参数是List
	//public List selectUserByIds(QueryVo vo);  //参数是包装类
	
}

 

你可能感兴趣的:(javaEE)