package dao;
import domain.Student;
import orm.RowMapper;
import orm.SqlSession;
import java.sql.*;
public class StudentDao {
private Student student ;
private static SqlSession sqlSession = new SqlSession();
public Student selectOne(Integer sno) {
String sql = "select * from student where sno= ?";
return sqlSession.selectOne(sql, new RowMapper() {
public <T> T mapperRow(ResultSet resultSet) throws SQLException {
student = new Student();
student.setSno(resultSet.getInt("sno"));
student.setSname(resultSet.getString("sname"));
student.setSsex(resultSet.getString("ssex"));
return (T) student;
}
}, sno);
}
public void insert(Student student) {
String sql = "insert into student values (?,?,?,?)";
sqlSession.update(sql,student.getSno(),student.getSname(),student.getSsex(),student.getSage());
}
}
package orm;
import java.sql.ResultSet;
import java.sql.SQLException;
public interface RowMapper {
<T>T mapperRow(ResultSet resultSet) throws SQLException;
}
package orm;
import domain.Student;
import java.sql.*;
public class SqlSession {
private String className = "com.mysql.cj.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/student";
private String username = "root";
private String password = "burst970919";
private Connection connection = null;
private PreparedStatement preparedStatement = null;
private ResultSet resultSet = null;
private Object object = null;
public <T> T selectOne(String sql, RowMapper rowMapper, Object... values) {
try {
Class.forName(className);
connection = DriverManager.getConnection(url, username, password);
preparedStatement = connection.prepareStatement(sql);
for (int i = 0; i < values.length; i++) {
preparedStatement.setObject(i+1,values[i]);
}
resultSet = preparedStatement.executeQuery();
if (resultSet.next()) {
object = rowMapper.mapperRow(resultSet);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
} finally {
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (preparedStatement != null) {
try {
preparedStatement.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
return (T)object;
}
public void update(String sql, Object... values) {
try {
Class.forName(className);
connection = DriverManager.getConnection(url, username, password);
preparedStatement = connection.prepareStatement(sql);
for (int i = 0; i < values.length; i++) {
preparedStatement.setObject(i+1,values[i]);
}
preparedStatement.executeUpdate();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
if (preparedStatement != null) {
try {
preparedStatement.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
}
}
import service.StudentService;
public class TestMain {
public static void main(String[] args) {
StudentService studentService = new StudentService();
System.out.println(studentService.queryStudent(2));
}
}
- 策略者模式执行过程