Java复习之mybatis

1.什么是Mybatis

MyBatis是持久层框架,它支持SQL。避免了几乎所有的JDBC代码和手动设置参数,简化了开发。MyBatis可以用XML文件、注解来进行配置。

2.JDBC的执行流程

1.加载JDBC驱动程序

Class.forName("com.mysql.jdbc.Driver"); //反射

2.建立连接

Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/数据库名称","用户名称","密码");
//例如:用户名称 root     密码123456

3.发送SQL语句(对数据库发出请求)

String sql="select id,username,pwd from t_user where id>?";
PrepareStatement ps=conn.prepareStatement(sql);
ps.setObject(1, 2); //第一个"问号",传入2. -->把id大于2的记录都取出来
rs=ps.executeQuery();

4.返回查询结果并打印

ResultSet rs=ps.executeQuery();  //执行查询请求,并返回"结果集"
while(rs.next()) {//rs.next()指向第一条
	//传入的参数是列索引-->数据库中的第1列,第2列,第3列
	//System.out.println(rs.getInt(1)+"---"+rs.getString(2)+"---"+rs.getString(3));
 System.out.println(rs.getSInt("id")+"---"+rs.getString("username")+"-"+rs.getString("pwd")
}

5.关闭连接

if(rs!=null){ //RsultSet rs
   rs.close();
}
if(ps!=null){ //PreparedStatement ps
   ps.close();
}
if(conn!=null){ //connection conn
   conn.close();
}

3.JDBC开发存在的问题

1.连接时需要频繁的连接,释放数据库连接对象,十分繁琐
2.sql语句是写在java中,耦合性太大
3.使用preparedStatement向占有位符号传参数存在硬编码,因为sql语句的where条件不一定,不便于维护

故mybatis的优点:
1.可以配置数据库连接池,使用连接池管理数据库
2.sql语句与java分开,解耦
3.MyBatis根据ORM,自动将java对象映射到数据库数据

4.ORM

对象关系映射,即将关系型数据库映射到java的pojo类

5.mybatis的运行原理

1.编写mybatis的配置文件,里面是mybatis的一些配置信息,如数据库的url,账号密码,连接池等
2.编写mapper.xml的映射文件,在里面编写sql语句,也可以使用注解
3.创建SqlSessionFactory
4.通过SqlSessionFactory创建sqlSession
5.通过SqlSession中的getMapper方法,加载mapper接口,执行数据库操作,在执行数据库的操作中,还要提到Executor执行器,它会根据SqlSession传递的参数动态地生成需要执行的SQL语句
6.sqlsession.commit提交事务,close关闭

6.#{}与${}的区别

#{}是一个占位符,本质上是使用了preparstatement进行了预编译,在预编译时会把参数部分用一个占位符 ? 代替,这样就有效防止了sql注入的问题
{} 将传入的数据直接显示生成在sql中,接受从用户输出的内容并提供给语句中不变的字符串,这样做是不安全的。这会导致潜在的SQL注入攻击。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值