使用mybatis框架首先需要导入核心jar包和所依赖的jar,配置核心文件,通常以“SqlMapConfig.xml”命名,核心配置文件中配置一些链接数据库的四个参数,以及使用哪种方式,<mappers></mappers>标签用来配置加载映射文件,子标签<mapper></mapper>中有三个属性,url,resource,class,url是映射文件的绝对路径,一般不建议使用,常用的resource,resource中写映射文件的名称即可。
映射文件常常需要我们自己手动的编写,实现的功能不一样,sql语句也不相同,所有要实现一种功能,就需要编写sql语句
mybatis基本的数据类型:String,Integet,Long,Double,Float,Short,Character,Byte,Boolean,我们知道基本的数据类型有八种,对应的包装类就有八种,mybatis框架将String也作为基本的数据类型
<mapper namespace="test">
<select id="findAllByid" parameterType="int" resultType="cn.itheima.pojo.User">
select * from user where id=#{id}
</select>
namespace:名称空间,用于隔离SQL语句
id:自己定义的名称,唯一的标识
parameterType:传入参数的类型,可以写基本数据类型,也可以写包装类
resultType:返回结果集类型,(javabean)
mybatis框架有占位符,拼接符的概念
占位符 #{}:起到占位的作用,如果传入的参数是基本数据类型,名称可以任意写
拼接符 ${}:字符串原样拼接,如果传入的参数是基本数据类型,名称必须写value(SQL注入的风险,所有慎重使用)
返回值值结果为集合,应该调用selectList方法,这个方法返回值就是一个集合,所以映射文件中配置成集合泛型的类型
占位符与拼接符的应用场景
简单的来说,当SQL语句中有等号的情况写应给使用占位符,当SQL语句中有like等关键字的时候,应给使用拼接符
<select id="findAllByusername" parameterType="String" resultType="cn.itheima.pojo.User">
SELECT * FROM USER WHERE username LIKE '%${value}%'
</select>
</mapper>
测试代码
@Test
public void testFindAllByid() throws Exception{
String resource ="SqlMapConfig.xml";
//通过流将核心配置文件读取出来
InputStream inputStream = Resources.getResourceAsStream(resource);
//通过核心配置文件输入流创建会话 工厂
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
//通过工厂创建会话
SqlSession openSession = factory.openSession();
//selectOne参数是名称空间+ID 传入的参数 = 1
User user = openSession.selectOne("test.findAllByid", 1);
System.out.println(user);
openSession.close();
}