MyBatis是一款优秀的持久层框架,用于简化JDBC开发
持久层:负责将数据保存到数据库的那一层代码
JAVAEE三层结构:表现层,业务层,持久层
表现层:页面展示
业务层:逻辑处理
持久层:对数据的持久化,将数据保存到数据库中
框架:是一个半成品软件,是一套可重用的、通用的、软件基础代码模型
在框架的编写上可使编写更加高效,规范,通用,可扩展
官网:https://mybatis.org/mybatis-3/zh/index.html
JDBC的缺点:
1、硬编码:
注册驱动,获取连接:Class.forName("com.mysql.jdbc.Driver");
String url="";
String uname="";
String pwd="";
Connection conn=DriverManger.getConnection(url,uname,pwd);
SQL语句:String sql="select * from tb_user where gender=?";
2、操作繁琐
手动设置参数
手动封装结果集
获取pstmt对象
PreparedStatement pstmt=conn.preparedStatement(sql);
设置参数值:
pstmt.setString(1,gender);
执行sql
ResultSet rs=pstmt.excuteQuery();
遍历Result,获取数据
User user=null;
List<User> users=new ArrayList<>();
while(rs.next()){
//获取数据
int id=rs.getInt("id");
String usename=rs.getString("usename");
String password=rs.getString("password");
//创建对象,设置其属性值
user=new User();
user.setId(id);
user.setUsename(usename);
user.setPassword(password);
user.setGender(gender);
//装入集合中
users.add(user);
}
MyBatis简化JDBC:
1.将字符串信息写到scr-java-rescources目录下mybatis-config.xml配置文件中:
<!--数据库的连接信息--> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql:///mybatis?useSSL=false"/> <property name="username" value="root"/> <property name="password" value="123456"/>
2.sql语句:Mybatis将其抽取到配置文件UserMapper.xml中去
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace:名称空间 --> <mapper namespace="test"> <select id="selectAll" resultType="com.itheima.pojo.User"> select * from tb_user; </select> </mapper>
3.在Mybatis中将设置参数,执行sql,遍历数据,封装对象写在
//1、加载Mybatis的核心配置文件,获取sqlSessionFactory String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //2、获取sqlsession对象,用它来执行sql SqlSession sqlSession = sqlSessionFactory.openSession(); //3、执行sql语句 List<User> users = sqlSession.selectList("test.selectAll"); System.out.println(users); //4、释放资源 sqlSession.clearCache();
MyBatis优点:几乎免除了所有的JDBC代码以及设置参数和获取结果集的工作