MyBatis

什么是MyBatis?

  1. MyBatis是一款优良的长久层(负责将数据保留到数据库的那一层代码)框架(半成品,感觉和自热饭差不多),是用于简化JDBC开发的。
  2. MyBatis本是Apache的一个开源我的项目iBatis,2010年这个我的项目由apache software foundation 迁徙到了Google code,并改名为MyBatis。2013年11月迁徙到Github。

一个新事物的呈现阐明这个新事物肯定领有旧事物没有的、不可比较的优越性,MyBatis亦是如此。

JDBC的毛病

首先咱们先举一个简略JDBC的例子。

//注册驱动Class.forName("com.mysql.jdbc.Driver");//获取链接String url = "jdbc:mysql:///db1?useSSl=false;String username = "root";//数据库用户名称String password = "1234";//数据库明码Connection conn = DriverManager.getConnection(url,username,password);//接管输出的查问条件String gender = "男";//定义sqlString sql = "select * from user where gender = ?"//获取pstmt对象PreparedStatement pstmt = conn.prepareStatement(sql);//设置?的值pstmt.setString(1,gender);//执行sqlResultSet rs = pstmt.executeQuery();//遍历Result,获取数据User user = null;ArrayList<User> users = new ArrayList<>();while (rs.next()){      //获取数据      int id = rs.getInt("id");      String username = rs.getString("username");      String password = rs.getString("password");      //创建对象设置属性值      user = new User();      user.setId(id);      user.setUsername(username);      user.setPassword(password);      user.setGender(gender);      //装入汇合      users.add(user);}

可能有人会说这不是挺便捷的吗?从外表上来看如同是这么一回事,但当不难看出JDBC在其中存在不少问题

  1. 硬编码
  • 注册驱动,获取连贯

//注册驱动Class.forName("com.mysql.jdbc.Driver");//获取链接String url = "jdbc:mysql:///db1?useSSl=false;//db1是要应用的数据库名String username = "root";//数据库用户名称String password = "1234";//数据库明码Connection conn = DriverManager.getConnection(url,username,password);
  • SQL语句

String gender = "男";//定义sqlString sql = "select * from user where gender = ?"
  1. 操作繁琐
  • 手动设置参数

//获取pstmt对象PreparedStatement pstmt = conn.prepareStatement(sql);//设置?的值pstmt.setString(1,gender);
  • 手动封装后果集
//遍历Result,获取数据User user = null;ArrayList<User> users = new ArrayList<>();while (rs.next()){      //获取数据      int id = rs.getInt("id");      String username = rs.getString("username");      String password = rs.getString("password");      //创建对象设置属性值      user = new User();      user.setId(id);      user.setUsername(username);      user.setPassword(password);      user.setGender(gender);      //装入汇合      users.add(user);}

MyBatis 简化

  1. 将硬编码局部写到配置文件中
  • 注册驱动,获取链接

    <dataSource type="POOLED"><!--数据库连贯信息-->    <property name="driver" value="com.mysql.cj.jdbc.Driver"/>    <property name="url" value="jdbc:mysql:///db1?useSSL=false"/>    <property name="username" value="root"/>    <property name="password" value="1234"/></dataSource>

    咱们将这一部分写道mybatis-config.xml中,这样就不必在代码中再去写了,未来只有读取配置文件的参数信息值就能够了。

  • SQL语句

<select id="selectByGender" parameterType="string" resultType="com.pojo.User">    select * from user where gender = #{gender};</select>
  1. 将操作繁琐的局部主动实现
  • 手动设置参数
  • 手动封装后果集
List<User> users = sqlSession.selectList("test.selectByGender","男");

MyBatis罢黜了简直所有的JDBC代码以及设置参数和获取后果集的工作,这样一看应用MyBatis是不是很不便。

官网文档 https://mybatis.net.cn/index....