框架学习系列 mybatis 第四篇 mybatis入门程序之需求开发1
本节主要内容
1:根据上节课中提出的需求完成①:根据用户id查询用户信息(#{}的使用)
2:代码实现
3:总结&下节预告
本文是《凯哥陪你学系列-框架学习之mybatis框架学习》中第四篇 mybatis入门程序之需求开发1根据id进行精确查找.
声明:本文系凯哥原创。转载请注明出处
一:根据用户id查询用户信息
1:在config目录下,创建userMapper.xml文件(这种命名规范是由ibatis遗留下来的)
userMapper.xml中内容:
说明:
namespace:命名空间。作业:其实就是对sql语句也就是statement进行分类管理。如果我们java中报名作用一样。同一个命名空间下,id只能是唯一的。不能重复。在不同命名空间下,id可以相同。
另:在mapper代理时候,有具体特殊及重要的作用。
<select></select> : 表示一个mappedStatementduix .执行那种操作。select执行的是查询操作
id:statement的唯一标示。一般和namespace命名空间联合使用确定整个项目中该sql语句是唯一的
#{}:表示一个占位符.就是jdbc连接中的?占位符一样的
#{id}:里面的id表示输入参数的名称。如果该参数是简单类型的。那么#{}里面的参数名称可以任意写
parameteType:输入参数的Java类型。可以是基本类型、对象类型、map类型等
resultType:输出结果所映射的java类型(也就是单条结果所以对应的java类型)。在本例中我们通过id查询后的结果对象就userpojo对象。所以就是pojo.user了。
完整代码:
<?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">
<mapper namespace="test">
<!-- 根据用户ID查询用户信息 -->
<!-- select:表示一个mappedStatement对象。将要执行那种操作 -->
<!-- id:statement的唯一标示 -->
<!-- #{}:表示一个占位符?。就是jdbc中sql语句中的?一样 -->
<!-- #{id}:里面的id表示输入参数的参数名称,
如果该参数是简单类型的,那么#{}里面的参数名称可以任意 -->
<!-- parameterType:输入参数的java类型 -->
<!-- resultType:输出结果的所映射的Java类型(单条结果所对应的java类型) -->
<select id="findUserById" parameterType="int" resultType="com.kaigejava.mybatis.pojo.User">
SELECT
* FROM USER WHERE id =#{id}
</select>
</mapper>
2:将创建的userMapper.xml文件添加到mybatis的全局配置文件中进行管理。
如下图:
二:测试代码开发
开发步骤:
回忆mybatis的执行步骤
1:获取全局的配置文件
2:根据配置文件信息创建sqlsessionFactory对象
3:有sqlsessionFactory对象获取到sqlsession对象
4:调用sqlsession对象的执行方法进行数据库操作
5:根据输入参数(类型)、sql语句得到对应的返回数据
所以根据上面步骤我们可以写出如下代码:
3.1:设置读取配置文件
3.2:使用流读取
3.3:创建sqlsessionFactory对象
3.4:由sessionfactroy对象获取到sqlsession对象
3.5://5:调用sqlsessiond 增删改查方法
说明:
第一参数:需要执行的sql语句唯一标示。命名空间+语句id
第二个参数:就是占位符?需要传递的值
3.6:关闭资源
完整代码:
代码如下:
public class TestUser {
/**
* 测试根据id进行查询
* @throws Exception
*/
@Test
public void findUserByIdTest() throws Exception{
//1:设置读取配置文件。全局配置文件的路径
String resourcePath = "SqlMapConfig.xml";
//2:使用流读取
InputStream inputStream = Resources.getResourceAsStream(resourcePath);
//3:创建sqlsessionFactory对象
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//4:由sessionfactroy对象获取到sqlsession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//5:调用sqlsessiond 增删改查方法
//第一个参数:statement的唯一标示。
User user = sqlSession.selectOne("test.findUserById",1);
System.out.println(user==null?new User():user.toString());
//6:关闭资源
sqlSession.close();
}
}
使用junit运行后:
绿色表示成功。执行后结果:
查看数据库中id为1的用户信息:
说明测试代码正确!
三:总结&下节预告
通过本文学习我们需要掌握的
1:userMapper.xml中配置怎么写以及各个参数分别表示什么
namespace、select、id、parameterType、resultType分别代表什么意思
2:mybatis的执行顺序(执行流程)
3:mybatis测试代码开发的步骤
4:#{}的用户
下节预告:
完成了根据id进行精确查找后,下面我们接着学习根据name进行模糊查询。以及${}的用法欢迎学习下一篇《框架学习系列 mybatis 第五篇 mybatis入门程序之需求开发2根据用户名模糊查询》