Mybatis 学习笔记之 查询(一)

根据 id 查用户

sqlMapConfig.xml 文件

<?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>

<!-- 和spring整合后 environments配置将废除-->
	<environments default="development">
		<environment id="development">
		<!-- 使用jdbc事务管理,事务控制由mybatis-->
			<transactionManager type="JDBC" />
		<!-- 数据库连接池,由mybatis管理-->
			<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>
	
</configuration>

数据库连接属性,自行对应修改。

 

 

 UserMapper.xml

 

 

  1. namespace: 命名空间,作用就是对 sql 进行分类化管理,理解 sql 隔离 。  注意:使用 mapper 代理方法开发,namespace 有特殊重要作用。(后续讲)
  2. 在映射文件中配置很多 sql 语句。
  3. 需求:通过 id 查询用户表记录。通过 select 执行数据库查询。
  4. id:标识映射文件中的 sql ,将 sql 封装到底层 mappedStatement 封装对象中,所以 id 称为 statement 的 id。
  5. #{ }: 表示一个占位符号。
  6. #{id}:其中的 id 表示接受输入的参数,参数名称就是 id 。如果输入参数是简单类型,#{ } 中的参数名可以任意,可以是 value 或者其他名称。
  7. parameterType:指定输入参数类型,这里指定 int 型。
  8. resultType:指定 sql 输出结果 所映射的 Java 对象类型,select 指定的 resultType 表示将单条记录映射到的 Java 对象。

 

<mapper namespace="test">
<select id="findUserById"  parameterType = "int"  resultType = "com.po.User">

SELECT * FROM USER  WHERE id = #{ id }

</select>
</mapper>

User 实体类代码省略。

 

sqlMapConfig.xml 加载映射文件

<mappers>
<mapper resource = "sqlmap/User.xml" />
</mappers>

 

Test类

@Test
	public void findUserByIdTest(){
		
		String resource = "sqlMapConfig.xml";
		InputStream inputStream;
		SqlSession sqlSession;
		try {
			inputStream = Resources.getResourceAsStream(resource);
			//创建会话工厂,传入 myBatis 配置信息
			SqlSessionFactory  sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
			
			sqlSession = sqlSessionFactory.openSession();
			
			//通过sqlSession 操作数据库
			//第一个参数:映射文件中 statement 的 id ,等于  namespace + "." + statement 的 id。
			//第二个参数:指定和映射文件中所匹配的parameterType 类型的参数。
			//sqlSession.selectOne 的结果是与映射文件中所匹配的 resultType 类型的对象。
			User user = sqlSession.selectOne("test.findUserById", 1);
			
			System.out.println(user);
			
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			sqlSession.close();
		}
		
		
	}

 

根据 name 模糊查询用户

 

 UserMapper.xml

 

根据用户名称模糊查询用户信息,可能返回多条。

<select id="findUserByName"  parameterType="java.lang.String"  resultType="com.po.User">
select * from user where name like '%${value}%'
</select>

 

 

 

  1. resultType: 指定单条记录所映射的 Java 对象类型,不管返回是否多条。
  2. ${}:表示拼接 sql ,将接收到的参数内容 不加修饰 拼接在 sql 中。
  3. 使用 ${} 拼接容易引起 sql 注入。但是 可以和 Order by 结合使用:ORDER BY ${User.sex}
  4. ${value} :接收输入参数内容,如果传入类型是简单类型, ${ } 中只能使用 value。

 

 

Test类

 

@Test
	public void findUserByNameTest(){
		
		String resource = "sqlMapConfig.xml";
		InputStream inputStream;
		SqlSession sqlSession;
		try {
			inputStream = Resources.getResourceAsStream(resource);
			//创建会话工厂,传入 myBatis 配置信息
			SqlSessionFactory  sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
			
			sqlSession = sqlSessionFactory.openSession();
			
			//通过sqlSession 操作数据库
			//第一个参数:映射文件中 statement 的 id ,等于  namespace + "." + statement 的 id。
			//第二个参数:指定和映射文件中所匹配的parameterType 类型的参数。
			//sqlSession.selectList 的结果是与映射文件中所匹配的 resultType 类型的对象。
			List<User> list = sqlSession.selectList("test.findUserByName", "Law");
			
			System.out.println(list);
			
			
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			sqlSession.close();
		}
		
		
	}

 

源代码下载:实例源码

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值