public class Student {
private String id;
private String name;
private String idadress;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getIdadress() {
return idadress;
}
public void setIdadress(String idadress) {
this.idadress = idadress;
}
}
package com.mybatis;
public interface StudentMapper {
public Student findStudentById(String id);
public void inserStudent(Student stu);
}
package com.mybatis;
import java.util.HashMap;
import java.util.Map;
public class StudentMapperXML {
public static final String namespace = "com.mybatis.StudentMapper";
private static Map<String, String> methodSQLMap = new HashMap<>();
static {
methodSQLMap.put("findStudentById", "select * from student where id=%s");
}
public static String getMethodSQL(String method) {
return methodSQLMap.get(method);
}
}
package com.mybatis;
public interface MySqlSession {
T selectOne(String var1);
T getMapper(Class var1);
}
------------------------------------------------------------------------------------------------------------
package com.mybatis;
import java.lang.reflect.Proxy;
public class MyDefaultSqlSession implements MySqlSession {
private MyExecutor executor = new MyBaseExecutor();
@Override
public T selectOne(String sql) {
return executor.query(sql);
}
@Override
public T getMapper(Class interfaces) {
return (T) Proxy.newProxyInstance(interfaces.getClassLoader(), new Class[] { interfaces }, new MyMapperPorxy(this));
}
}
-----------------------------------------------------------------------------------------------
package com.mybatis;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class MyMapperPorxy implements InvocationHandler {
private MySqlSession sqlsession;
public MyMapperPorxy() {
}
public MyMapperPorxy(MySqlSession sqlsession) {
this.sqlsession = sqlsession;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
String mapperclass = method.getDeclaringClass().getName();
if (StudentMapperXML.namespace.equals(mapperclass)) {
String methodname = method.getName();
String originsql = StudentMapperXML.getMethodSQL(methodname);
String formatedsql = String.format(originsql, String.valueOf(args[0]));
return sqlsession.selectOne(formatedsql);
}
return null;
}
}
-------------------------------------------------------------------------------------------------------------
package com.mybatis;
public class BootStrapClass {
public static void main(String[] args) {
MySqlSession sqlsession = new MyDefaultSqlSession();
StudentMapper studenmapper = sqlsession.getMapper(StudentMapper.class);
Student student = studenmapper.findStudentById("a");
System.out.println(student);
}
}
package com.mybatis;
public interface MyExecutor { public T query(String statement);
}
package com.mybatis;
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException;
public class MyBaseExecutor implements MyExecutor { private String url; private String user; private String password;
}
package com.mybatis;
public class Student { private String id; private String name; private String idadress;
}
package com.mybatis;
public interface StudentMapper { public Student findStudentById(String id);
}
package com.mybatis;
import java.util.HashMap; import java.util.Map;
public class StudentMapperXML { public static final String namespace = "com.mybatis.StudentMapper"; private static Map<String, String> methodSQLMap = new HashMap<>(); static { methodSQLMap.put("findStudentById", "select * from student where id=%s"); } public static String getMethodSQL(String method) { return methodSQLMap.get(method); }
}
package com.mybatis;
public interface MySqlSession {