之前在学习JavaWeb中学习到了用JDBC来连接数据库。这几周开始学习了ssm框架的构建,其中的m就是MyBatis,因此在学习的过程中记录老师的讲解以及自己上网找的学习资料,汇编成自己的MyBatis学习笔记。
什么是MyBatis
MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。
JDBC代码复习
在JavaWeb的JDBC的核心类中,有DriverManger,Connection,PreparedStatement,和ResultSet
JDBC的编写
public class DBUtil {
private static final String URL="jdbc:mysql://localhost:3306/mysql";
private static final String USERNAME="root";
private static final String PASSWORD="123456";
private static final String DRIVER ="com.mysql.jdbc.Driver";
private static PreparedStatement ps=null;
private static ResultSet rs=null;
//获取链接对象
public static Connection getConn() {
Connection conn=null;
try {
//加载驱动
Class.forName(DRIVER);
//从驱动管理器中获取链接对象
conn= DriverManager.getConnection(URL, USERNAME, PASSWORD);
} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
//查
public static ResultSet getResultSet(String sql,Object...objects ) {
try {
ps =getConn().prepareStatement(sql);
//设置参数
for(int i=0,j=0;i<objects.length;i++) {
ps.setObject(++j, objects[i]);
}
rs =ps.executeQuery();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return rs;
}
//增、删、改
public static boolean update(String sql, Object... objects) {
try {
ps = getConn().prepareStatement(sql);
//设置参数
for(int i=0,j=0;i<objects.length;i++) {
ps.setObject(++j, objects[i]);
}
return ps.executeUpdate()>0;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
public List<Course> getCourseByStatus(String status) {
String sql ="select * from course where status=?";
ResultSet rs =DBUtil.getResultSet(sql, status);
List<Course> courses = new ArrayList<Course>();
Course course = null;
try {
while(rs.next()) {
course = new Course();
course.setId(rs.getInt("id"));
course.setName(rs.getString("cname"));
course.setPrice(rs.getInt("cprice"));
course.setStatus(rs.getInt("status"));
courses.add(course);
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return courses;
}
或者是直接在JDBC中
public class JDBCTest {
public static void main(String[] args) throws Exception {
Connection connection = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
// 加载驱动
Class.forName("com.mysql.jdbc.Driver");
// 获取连接
String url = "jdbc:mysql://localhost:3306/mysql";
String user = "root";
String password = "123456";
connection = DriverManager.getConnection(url, user, password);
// 获取statement,preparedStatement
String sql = "select * from course where status=?";
prepareStatement = connection.prepareStatement(sql);
// 设置参数
prepareStatement.setLong(1, 1l);
// 执行查询
rs = prepareStatement.executeQuery();
// 处理结果集
try {
while(rs.next()) {
course = new Course();
course.setId(rs.getInt("id"));
course.setName(rs.getString("cname"));
course.setPrice(rs.getInt("cprice"));
course.setStatus(rs.getInt("status"));
courses.add(course);
}
} finally {
// 关闭连接,释放资源
if (rs != null) {
rs.close();
}
if (prepareStatement != null) {
ps.close();
}
if (connection != null) {
connection.close();
}
}
}
}