最近逐渐在往Java方向转,利用工作之余学习一些Java的基础知识,因为之前的.Net项目基本都是使用的SQLServer数据库,所以今天就写一下Java连接SqlServer数据库的例子,以便以后能够更加快速的学习和上手,话不多说 直接上代码:
packagecom.mingqi.test;importcom.microsoft.sqlserver.jdbc.SQLServerDriver;import java.sql.*;public classJdbcForSqlServer {public static void main(String[] args) throwsSQLException {
Connection connection=null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;try{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
connection= DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=test","sa","123sa");
String sql="select * from Users where name=?";
preparedStatement=connection.prepareStatement(sql);
preparedStatement.setString(1,"毛明明");
resultSet=preparedStatement.executeQuery();while(resultSet.next())
{
System.out.println(resultSet.getString("ID")+resultSet.getString("Name"));
}
}catch(ClassNotFoundException e) {
e.printStackTrace();
}catch(SQLException e) {
e.printStackTrace();
}finally{if(resultSet!=null)
{try{
resultSet.close();
}catch(SQLException e) {
e.printStackTrace();
}
}if(preparedStatement!=null)
{try{
preparedStatement.close();
}catch(SQLException e) {
e.printStackTrace();
}
}if(connection!=null)
{try{
connection.close();
}catch(SQLException e) {
e.printStackTrace();
}
}
}
}
}
运行结果如下:

这是用JDBC连接的数据库,该方式存在的问题主要有:
1、数据库连接的创建、释放频繁造成资源浪费从而影响系统性能,如果使用数据库连接池可以解决此问题
2、SQL语句在代码中硬编码,造成代码不易维护,实际应用SQL变化的可能性比较大,SQL变动需要改变Java代码
3、使用prepareStatement占位符传参数存在硬编码,因为sql语句的where条件不一定,可能多也可能少,修改SQL还要修改代码系统不易维护
4、对结果集解析存在硬编码(查询列名),SQL变化导致解析代码变化,系统不易维护,如果能将数据库记录封装成pojo对象解析比较方便
所以接下来回接触Mymatis框架,来解决这些问题
mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。 mybatis通过xml或注解的方式将要执行的各种statement配置起来,并通过java对象和statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。 采用ORM思想解决了实体和数据库映射的问题,对jdbc进行了封装,屏蔽了jdbc api底层访问细节,使我们不用与jdbc api打交道,就可以完成对数据库的持久化操作。
3049

被折叠的 条评论
为什么被折叠?



