MyBatis的三种查询

UserMapper映射文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
  PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  
  <!--namespace="com.bjsxt.mapper.UserMapper":命名空间,权限定路径  -->
  <mapper namespace="com.bjsxt.mapper.UserMapper">
  		<!-- id:sql语句唯一标识符    resultType:返回结果,全限定路径。如果是集合需要写集合泛型 -->
  		<select id="selList" resultType="user">
  			select * from t_user
  		</select>
  		
  		<select id="selOne" resultType="user" parameterType="int">
  		    <!--传参两种方式:1.#{0} :index:从0开始,实际上{}是什么都行,用于占位
  		    			 2.#{param1}
  		      -->
  		    select * from t_user where id=#{param2} 		    
  		</select>
  		
  		<select id="sel" resultType="user" parameterType="user">
  		<!-- 如果参数是对象:通过#{属性名} 获取-->
  		select * from t_user where username=#{username} and password=#{password}  		
  		</select>
  		
  		<select id="selM" resultType="user" parameterType="map">
  		<!-- 如果参数是Map:通过#{key} 获取-->
  		select * from t_user where username=#{uname} and password=#{upwd}
  		</select>
 </mapper>  		

测试:TestUserMapper

package com.bjsxt.test;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import javax.print.attribute.HashAttributeSet;

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.bjsxt.pojo.User;
/**
 * 测试:在项目下导入JUnit,使用@test测试
 *     mybatis文件放在src下。
 *     查看路径是否写的正确:选中+ctrl+鼠标左键
 * @author YangBiao
 *
 */
public class TestMyBatis {
	@Test
	public void testList() throws IOException{
		//1.加载MyBatis核心配置文件
		InputStream is = Resources.getResourceAsStream("mybatis.xml");
		//2.获取SqlSessionFactory对象
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
		//3.通过工厂打开session对象
		SqlSession session = factory.openSession();
		//4.通过session对象执行操作
		List<User> list = session.selectList("com.bjsxt.mapper.UserMapper.selList");
		//5.打印输出
		System.out.println(list);
		for (User user : list) {
			System.out.println(user);
		}
		
		//6.关闭资源
		session.close();		
	}
	
	@Test
	public void testSelectOne() throws IOException{
		//1.加载MyBatis核心配置文件
		InputStream is = Resources.getResourceAsStream("mybatis.xml");
		//2.获取SqlSessionFactory对象
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
		//3.通过工厂打开session对象
		SqlSession session = factory.openSession();
		//4.通过session对象执行操作
		//User user = session.selectOne("com.bjsxt.mapper.UserMapper.selOne");
		User user = session.selectOne("com.bjsxt.mapper.UserMapper.selOne", 2);
		System.out.println(user);
	
		
		//6.关闭资源
		session.close();
		
	}
@Test
	public void testSel(){
		SqlSession session=null;
		try {
			 session = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis.xml")).openSession();
			User u = new User();
			u.setUsername("lisi");
			u.setPassword("123");
			User user = session.selectOne("com.bjsxt.mapper.UserMapper.sel", u);
			System.out.println(user);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(session!=null){
				session.close();
			}
			
		}
	}
	
	@Test
	public void testSelM(){
		SqlSession session=null;
		try {
			 session = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis.xml")).openSession();
			Map<String, String> map = new HashMap<>();
			map.put("uname", "wangwu");
			map.put("upwd", "123");
			User user = session.selectOne("com.bjsxt.mapper.UserMapper.selM", map);
			System.out.println(user);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally{
			if(session!=null){
				session.close();
			}
			
		}
	}
}

实体类:user

package com.bjsxt.pojo;

import java.io.Serializable;

public class User implements Serializable{
	private int id;
	private String username;
	private String password;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + id;
		result = prime * result + ((password == null) ? 0 : password.hashCode());
		result = prime * result + ((username == null) ? 0 : username.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		User other = (User) obj;
		if (id != other.id)
			return false;
		if (password == null) {
			if (other.password != null)
				return false;
		} else if (!password.equals(other.password))
			return false;
		if (username == null) {
			if (other.username != null)
				return false;
		} else if (!username.equals(other.username))
			return false;
		return true;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", username=" + username + ", password=" + password + "]";
	}
	public User(int id, String username, String password) {
		super();
		this.id = id;
		this.username = username;
		this.password = password;
	}
	public User() {
		super();
	}
	
	

}

mybatis核心配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
  <configuration>
  		<!--加载外部properties文件  -->
  		<properties resource="db.properties" />
  		<settings>
  			<!-- 设置mybatis使用log4j支持 -->
  			<setting name="logImpl"  value="LOG4J"/>
  		</settings>
  		<!-- 设置别名 -->
  		<typeAliases >
  			<!--自己设置别名  -->
  			 <!-- <typeAlias type="com.bjsxt.pojo.User" alias="u"/> --> 
  			 <!-- 直接写全限定路径,别名为类名且不区分大小写,最常用 -->
  			<!-- <typeAlias type="com.bjsxt.pojo.User"/> --> 
  			<!-- 只写包名,别名为类名且这个包下的所有类的别名都是类名 -->
  			<package name="com.bjsxt.pojo"/>
  		</typeAliases>
	  	<environments default="dev">    <!-- 指定哪一个环境 -->
	  			<environment id="dev">  <!-- 配置开发环境  id:环境唯一标识符-->
	  					<!-- 事务管理器   type="JDBC":以JDBC的方式管理事务 -->
	  					<transactionManager type="JDBC"></transactionManager>
	  					<!-- 数据库连接池:配置连接池和参数  type="POOLED":采取连接池技术
	  								  property:配置参数
	  					 -->
	  					<dataSource type="POOLED">
	  							<property name="driver" value="${jdbc.driver}"/>
	  							<property name="url" value="${jdbc.url}"/>
	  							<property name="username" value="${jdbc.username}"/>
	  							<property name="password" value="${jdbc.password}"/>
	  					</dataSource>
	  			</environment>
	  	</environments>
	  	<!-- 扫描mapper文件 -->
	  	<mappers>
	  		<mapper resource="com/bjsxt/mapper/UserMapper.xml"/>
	  	</mappers>
  </configuration>

外部文件db.propertise:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/bjsxt
jdbc.username=root
jdbc.password=root

日志文件log4j.properties:

# Set root category priority to INFO and its only appender to CONSOLE.
log4j.rootCategory=ERROR, CONSOLE
 #log4j.rootCategory=DEBUG, CONSOLE, LOGFILE
 
#设置方法级别日志
log4j.logger.com.bjsxt.mapper.UserMapper.selAll=DEBUG

#设置类级别日志
log4j.logger.com.bjsxt.mapper.UserMapper=DEBUG

#设置包级别日志
log4j.logger.com.bjsxt.mapper=DEBUG


# CONSOLE is set to be a ConsoleAppender using a PatternLayout.
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=- %m%n

# LOGFILE is set to be a File appender using a PatternLayout.
log4j.appender.LOGFILE=org.apache.log4j.FileAppender
log4j.appender.LOGFILE.File=F:/test.log
log4j.appender.LOGFILE.Append=true
log4j.appender.LOGFILE.layout=org.apache.log4j.PatternLayout
log4j.appender.LOGFILE.layout.ConversionPattern=- %m %l%n

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值