MyBatis初识
MyBatis是一个数据库持久化框架,半成品。--可复用,可扩展,可维护
框架是为了解决某一个领域产生的。(框架是有很多种的)
MyBatis是ORM框架
MyBatis和jdbc的区别:
jdbc:
重复性代码比较多
封装对象 insert(User user) select 比较麻烦
没有性能控制--如果要提高效率--需要自己写缓存 一级缓存 二级缓存EntityManagerFactory(配置才能使用)
while(rs.hasNext()){
User user = new User()
user.setId…
}
mybatis 特点:
没有太多重复代码
封装对象(不用手动处理参数) -->select User对象
性能控制 缓存
(把sql从代码抽取出来)sql统一管理,维护比较方便
企业90%都在使用mybatis – 大型项目在使用
MyBatis配置文件 - MyBatis-Config.xml jdbc.properties UserMapper.xml
public void save(User user) throws IOException {
//调用mapper.xml的select方法
Reader reader = Resources.getResourceAsReader("MyBatis-Config.xml");
//得到SqlSessionFactory
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
//通过sqlSessionFactory得到sqlSession
SqlSession sqlSession = sqlSessionFactory.openSession();
//调用方法 namespace+id
sqlSession.insert("cn.itsource.dao.IUserDao.save", user);
//提交
sqlSession.commit();
}
这是MyBatis完成crud的核心,MyBatis可以进行批量操作
重复代码过多,需要抽取
$ {id} 找的类参数类的里面 getId这个方法,如果有 就不会报错,没有就会报错
'# 占位符,$ 拼接字符串形式 – 比较重要点
userMapper.xml
update t_user set name=${name} where id=#{id}
生成语句
update t_user set name=小秋秋 where id=?
$ 拼接字符串方式 --Statement --存在sql注入问题
'# 占位符 – PreparedStatement
(3) 平时使用比较多还是 #{id}
(4) KaTeX parse error: Expected 'EOF', got '#' at position 32: …by上面 其他情况下 就是使用#̲ 以上是和#的区别