mybatis
为什么用mybatis
//注册jdbc驱动
Class.forNmae("com.mysql.jdbc.Driver");
//打开连接
conn=DriverManager.getConnenction(DB_URL,USER,PASSWORD);
//执行查询
stmt=conn.createStatement();
String sql="SELECT bid,name,author_id FROM blog";
ResultSet rs=stmt.executQuery(sql);
//获取结果集
while(rs.next()){
int bid=rs.getInt("bid");
String name=rs.getString("name");
String authorId=rs.getString("author_id")
}
如果业务当中的业务比较复杂,表非常多,各种操作数据库的增删改查的方法也比较多,那么这样代码会重复出现很多次。而去每次都要我们管理数据库的连接资源,如果忘记写就可能会造成数据库服务连接耗尽。这个就是我们通过JDBC的API去操作数据库的方法,这个仅仅是一个查询。如果我们项目当中的业务比较复杂,表非常多,各种操作数据库的增删改查的方法也比较多的话,那么这样代码会重复出现很多次。在每一段这样的代码里面,我们都需要自己去管理数据库的连接资源,如果忘记写
close()了,就可能会造成数据库服务连接耗尽。
另外还有一个问题就是处理业务逻辑和处理数据的代码是耦合在一起的。如果业务流程复杂,跟数据库的交互次数多,耦合在代码里面的SQL语句就会非常多。如果要修改业务逻辑,或者修改数据库环境(因为不同的数据库SQL语法略有不同),这个工作量是也是难以估计的。还有就是对于结果集的处理,我们要把ResultSet转换成POJO的时候,必须根据字段属性的类型一个个地去处理,写这样的代码是非常枯燥的:
int bid=rs.getInt("bid");
String name=rs.getString("name");
String authorId=rs.getString("author_id");
blog.setAuthorId(authorId);
blog.setBid(bid);
blog.setName(name);
也正是因为这样,我们在实际工作中是比较少直接使用JDBC的。那么我们在Java程序里面有哪些更加简单的操作数据库的方式呢?