这一篇通过java反射来实现一个通用的BaseMapper
public void insert(Object user) {
this.openConnection();
try {
String sql = TSqlUtils.getInsertSql(user);
Statement stmt = this.conn.createStatement();
System.out.println(sql);
stmt.execute(sql.toString());
} catch (SQLException e) {
throw new RuntimeException(e);
}
this.closeConnection();
}
public void delete(Object user){
this.openConnection();
try {
String sql = TSqlUtils.getDeleteSql(user);
Statement stmt = this.conn.createStatement();
System.out.println(sql);
stmt.execute(sql.toString());
} catch (Exception e) {
throw new RuntimeException(e);
}
this.closeConnection();
}
public void update(Object user) {
this.openConnection();
try {
String sql = TSqlUtils.getUpdateSql(user);
Statement stmt = this.conn.createStatement();
System.out.println(sql);
stmt.execute(sql.toString());
} catch (SQLException e) {
throw new RuntimeException(e);
}
this.closeConnection();
}
这样不管是哪个实体,只要Mapper类继承BaseMapper就可以实现增删改查的功能了。
public class UserMapper extends BaseMapper {
}
基本的增删该查 UserMapper里不用写。只需要继承BaseMapper就行了
UserMapper userMapper = new UserMapper();
UserEntity user = new UserEntity();
user.username = "sougit";
user.password = "sgcom";
userMapper.insert(user);
user.id = 2L;
user.username = "hello";
user.password = "world";
userMapper.update(user);
user.id = 3L;
userMapper.delete(user);
来看一下效果
至此一个通用的BaseMapper开发完成。
但是这里有一个问题,就是insert update 等方法的参数类型还是Object
Object在处理自动类型转换的时候 能力太弱了。
下一篇将通过泛型技术来实现一个更健壮、扩展性更强的BaseMapper
--------------------------------
文章校验码 【mgh0】
请参考作者置顶的文章、或私信作者获取完整代码的Git地址。