mybatis知识点

1. mybatis和Hibernate的区别

       两者都是对象关系映射框架,体现为都提供实体类和数据库表相互映射的能力

        不同点:(1)mybatis不完全是一个ORM框架,需要自己编写SQL语句; hibernate对象关系能力强,有原生态的HQL

                        (2) mybatis 学习门槛低,简单易学,灵活度高,适合对关系模型要求不高的软件开发(互联网软件、企业运营                                      类软件,因为这需求变化频繁,mybatis灵活度高

                                 hibernate开发可以节省很多代码,但是学习门槛高,精通门槛更高(怎么设计O/R映射,在性能和对象模型之                                   间如何权限

 2. mybatis工作原理

              Mybatis应用程序根据XML配置文件创建SqlSessionFactory,SqlSessionFactory再根据配置(XML配置,Java代码注解),获取一个SqlSession,SqlSession 包含了执行sql所需要的所有方法,可以通过SqlSession直接运行映射的sql语句,我弄成对数据的增删改查和事务提交等,用完了后关闭SqlSession。

           (1)创建sqlSessionFactory

           (2)创建sqlSession(里面包含了Executor(是用来增删改查的)和Configuration)

             (3)   执行具体的sql的请求(sqlSession根据Statement ID,在myBatis配置对象configuration中获取到对应的MappedStatement对象,然后调用mybatis执行器来执行具体的操作)

public static void main(String[] args) {
		InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml");
		SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream);
		SqlSession sqlSession = factory.openSession();
		String name = "lily";
		List<User> list = sqlSession.selectList("com.lnsf.mapper.UserMapper.getUserByName",params);
}

  工作模式:

  1. 创建SqlSessionFactoryBuilder对象,调用build(inputstream)方法读取并解析配置文件,返回SqlSessionFactory对象
  2. 由SqlSessionFactory创建SqlSession 对象,没有手动设置的话事务默认开启
  3. 调用SqlSession中的api,传入Statement Id和参数,内部进行复杂的处理,最后调用jdbc执行SQL语句,封装结果返回

 3. #{}和${}区别

#{}:表示一个占位符,通过#{}可以实现prepareStatement向占位符中设置的值,自动将Java类型和jdbc类型转换,#{}可以有效防止SQL注入

#{}:表示sql串拼接,通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换, ${}可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${} 括号中只能是value。

总结:使用#{}可以有效的防止SQL注入,提高系统安全性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值