namespace命名空间,作用就是对sql进行分类话管理,理解sql隔离
注意:使用mapper代理方法开发,namespace有特殊重要的作用
- User.xml
<mapper namespace="test">
<select id="findUserById" parameterType="int" resultType="cn.itcast.mybatis.po.User">
SELECT * FROM USER WHERE ID=#{id}
</select>
</mapper>
- Mybatis类
public class MybatisFirst{
//根据id查询用户信息,得到一条记录结果
@Test
public void findUserByIdTest() throws IOException{
//mybatis配置文件
String resource="SqlMapConfig.xml";
//得到配置文件
InputStream inputStream =Resources.getResourceAsStream(resource);
//创建会话工厂,传入mybatis的配置文件信息
SqlSessionFactory sqlSessionFactory =new SqlSessionFactoryBuider().build(inputStream);
//通过工厂得到SqlSession
SqlSession sqlSession =sqlSessionFactory.openSession();
//通过SqlSession操作数据库
//第一个参数:映射文件中statement的id,等于=namespace+ . +statement的id
//第二个参数:指定和映射文件中所匹配的parameterType类型的参数
//sqlSession.selectOne的结果,是与映射文件中所匹配的resultType类型的对象
User user= sqlSession.selectOne("test.findUserById",1);
System.out.println(user);
//释放资源
sqlSession.close();
}
}
-
#{}和KaTeX parse error: Expected 'EOF', got '#' at position 7: {} 1.#̲{}表示一个占位符好 2.{}表示一个拼接符号,会引用sql注入,所以不推荐使用${}
-
selectOne和selectList
1.selectOne表示查询出一条记录进行映射,如果使用selectOne可以实现使用selectList也可以实现(List中只有一个对象)
2.selectList表示查询出一个列表(多条记录)进行映射,如果使用selectList查询多条记录,不能使用selectOne -
parameterType
在映射文件中通过parameter指定输入参数的类型 -
resultType
在映射文件中通过resultType指定输出结果的类型